我有一个以下形式的数据框:
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
函数生成颜色,则会生成相对于此列的因子和后来的颜色。
希望这很清楚,
感谢。
答案 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张图表会更容易。