【问题标题】:filled.contour in R: how to make the same density is same colorR中的填充.轮廓:如何使相同的密度是相同的颜色
【发布时间】:2014-07-09 06:11:02
【问题描述】:

我需要在 R 中使用filled.contour 绘制二维密度图。 我有两个数据集并将它们绘制在两个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 是蓝色。我在这两个图中使用相同的色标。 为了使这两个图具有可比性,我想在这两个图中以相同的密度使用相同的颜色。

谁能告诉我,我应该如何更改我的设置以使其正确?

【问题讨论】:

  • 当发布到 SO 时,尝试使 a reproducible example 很重要。由于您没有包含任何数据,因此很难知道您看到了什么。
  • 谢谢弗利克先生。下次我会这样做。我想我得到了很好的答案。感谢您的所有帮助!

标签: r kernel-density


【解决方案1】:

默认情况下,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
)

产生这两个图

【讨论】:

  • 嗨 BondedDust 和 MrFlick,这正是我需要的。
  • 非常感谢您的帮助!
猜你喜欢
  • 2014-05-22
  • 2020-10-03
  • 2020-04-14
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多