0

我有以下形式的数据框:

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

因此,要使用来自第二个数据帧的五列来为点着色,从而获得五个不同的图表。我设法通过查看here来做到这一点(图中的颜色点因值的向量而不同),但我无法弄清楚如何为所有五个不同的图设置相同的色标。

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

希望这很清楚,

谢谢。

4

1 回答 1

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 个图,所以这部分有点不清楚,但我认为 melt 函数将有助于获得全面的色带,而 facet_grid 函数可能更容易如果这是你想要的,一次做 5 个图表。

于 2013-04-03T14:55:29.890 回答