为ggplot2中的每一行指定颜色

时间:2014-04-20 01:12:39

标签: r ggplot2 linegraph

大家好,              我正在尝试使用geom_line函数在R中创建折线图。我想为每一行指定特定颜色,但我无法这样做。当我尝试手动分配颜色时,我将颜色名称作为变量,而在图例中,它们按字母顺序排列。如果我没有,那么我根本就没有任何颜色。我也在网上环顾四周,发现应该有一个分组变量,通过它可以分配颜色。不幸的是,在我的数据集中,每列对应一个不同的变量。我不确定转置数据集是否有效,因为我试图将这些变量映射到x轴上的> 2000值。我想我在这里错过了一些非常简单的东西。

ggplot(data=data, aes(xvar))+
geom_line(aes(y=var1))+
geom_line(aes(y=var2))+
geom_line(aes(y=var3))+
geom_line(aes(y=var4))

enter image description here

如果以前已经回答过这个问题,请随时将其重定向到另一个部分。任何帮助将不胜感激。

我也可以手动完成而不使用ggplot2函数,其代码如下:

plot(data$Wavelength,data$var1,col="green")
par(new=T)
plot(data$wavelength,data$var2,col="red")
par(new=T)
plot(data$wavelength,data$var3,col="purple")
par(new=T)
plot(data$wavelength,data$var4,col="black")
par(new=F)

enter image description here

1 个答案:

答案 0 :(得分:7)

以下是一些可能有用的快捷方式:

dat <- data.frame(wave = 1:100,
                  var1 = sort(rnorm(100)),
                  var2 = sort(rnorm(100, 1)),
                  var3 = sort(rnorm(100, 2)))

plot(dat$var3, col = 'blue', type = 'l')
lines(dat$var2, col = 'red')
lines(dat$var1, col = 'green')

enter image description here

library(reshape2)
library(ggplot2)

dat.m <- melt(dat, id.vars = 'wave')

ggplot(dat.m, aes(wave, value, colour = variable)) + geom_line()

enter image description here

ggplot(dat.m, aes(wave, value, colour = variable)) + geom_line() + 
  scale_colour_manual(values = c('pink','orange','white'))

enter image description here