在ggplot2中为每行分配颜色

3

大家好, 我正在尝试使用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))

输入图像描述

如果此问题已有答案,请随意将其重定向到其他部分。非常感谢您的任何帮助。

我也可以手动完成,而不使用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
你是如何尝试添加颜色的?融合数据会更简单,然后你只需要一个geom_line。 - rawr
@rawr- 你说得对。我需要融合一下,这样会更容易!我会尝试一下并让它正常工作。谢谢! - VGu
你可以直接使用 geom_line(aes(y=yvar1),col="red") + geom_line(aes(y=yvar2),col="blue"),但是如果你不采用融合/将颜色设置为美学方法,就无法得到图例。 - Spacedman
1个回答

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接