如何用相同的比例在R中着色点

时间:2013-04-03 13:52:33

标签: r colors

我有一个以下形式的数据框:

Data <- data.frame(X = sample(1:10), Y = sample(1:10)) 

我想用

获得的点颜色
plot(Data$X,Data$Y)

使用其他数据框中的值:

      X1    X2    X3   X4    X5
1   0.57  0.40  0.64 0.07  0.57
2   0.40  0.45  0.49 0.21  0.39  
3   0.72  0.65  0.74 0.61  0.71
4   0.73  0.54  0.76 0.39  0.64
5   0.88  0.81  0.89 0.75  0.64
6   0.70  0.65  0.78 0.51  0.66
7   0.84  0.91  0.89 0.86  0.83
8  -0.07  0.39 -0.02 0.12 -0.01
9   0.82  0.83  0.84 0.81  0.79
10  0.82  0.55  0.84 0.51  0.59

因此,使用第二个数据框中的五列来为五个不同的图形着色。我设法通过查看这里(Colour points in a plot differently depending on a vector of values)来做到这一点,但我无法弄清楚如何为所有五个不同的图设置相同的色标。

第二个数据框中的列可能具有不同的最小值和最大值,因此如果我使用第一列上的cut函数生成颜色,则会生成相对于此列的因子和后来的颜色。

希望这很清楚,

感谢。

1 个答案:

答案 0 :(得分:0)

您需要使用颜色渐变来包含所有值,以便您可能希望将它们放在同一个矢量中。我可能会融化数据,然后进行颜色渐变,然后使用ggplot中的facet函数来获取多个图。或者,如果您不想使用ggplot,您可以将数据转换回多个列,并为您的颜色添加5列。

require(reshape2)
require(ggplot2)
Data.m <- melt(Data,id=Y)
rbPal <- colorRampPalette(c('red','blue'))
Data.m$Col <- rbPal(10)[as.numeric(cut(Data.m$value,breaks = 10))]
ggplot(Data.m, aes(value, Y,col=Col)) + 
  geom_point() +
  facet_grid(variable~.)

你的Data对象有两个变量,X和Y,但是你谈到制作5个图形,所以这个部分有点不清楚,但我认为融合函数将有助于获得全面的颜色渐变和facet_grid函数可能使如果这是你想要的,那么一次做5张图表会更容易。