我需要filled.contour
在R中使用绘制二维密度图。我有两个数据集,并将它们绘制成两个fill.contour
。我在这里没有10个声誉,因此无法在此处发布我的数据。我将代码发布在这里,希望它可以帮助您找出问题所在。
library(MASS)
density <- kde2d(multi_ligand[,21], multi_ligand[,7])
filled.contour(density,
color.palette=colorRampPalette(c('white','blue','yellow','red','darkred')),
xlab=colnames(single_ligand[21]),
ylab=colnames(single_ligand[7])
)
density1 <- kde2d(single_ligand[,21], single_ligand[,7])
filled.contour(density1,
color.palette=colorRampPalette(c('white','blue','yellow','red','darkred')),
xlab=colnames(single_ligand[21]),
ylab=colnames(single_ligand[7])
)
问题是我发现在这两个图中,相同密度下的颜色不相同。例如,在第一个图中,密度0.06是黄色,但是,在第二个图中,密度0.06是蓝色。我在这两个图中使用相同的色标。为了使这两个图具有可比性,我想在这两个图中使用相同密度的相同颜色。
可以告诉我如何更改设置以使其正确吗?
默认情况下,filled.contour
将调整颜色块以均匀覆盖每个数据集的值范围(z
在这种情况下density
为)。如果要在两个图上使用完全相同的级别,则需要自己指定它们。这是一些代码,这些代码将指定将覆盖两个数据集范围的级别。
#sample data
set.seed(15)
ax<-rnorm(50) #like multi_ligand[,21]
ay<-rnorm(50) #like multi_ligand[,7]
bx<-rnorm(75,2, .5) #like single_ligand[,21]
by<-rnorm(75,2, .5) #like single_ligand[,7]
#calculate both densities
density <- kde2d(ax, ay)
density1 <- kde2d(bx, by)
#make levels that cover both ranges of z values
lvls <- pretty(range(density$z, density1$z),20)
#draw both plots using the same levels
filled.contour(density,
color.palette=colorRampPalette(c('white','blue','yellow','red','darkred')),
levels=lvls
)
filled.contour(density1,
color.palette=colorRampPalette(c('white','blue','yellow','red','darkred')),
levels=lvls
)
产生这两个情节
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句