繁体   English   中英

用ggplot2中的不同调色板进行过度绘图

[英]Overplotting with different colour palettes in ggplot2

亲爱的堆栈溢出阅读器,

我有一个数据集,该数据集包含“原始”数据,并为此另外计算了某种平滑函数。 然后,我想将原始数据绘制为点,将平滑绘制为一条线。 这适用于以下情况:

Loc <- seq(from=1,to=50)
Loc <- append(Loc,Loc)
x <- seq(from=0,to=45,by=0.01)
Val <- sample(x,100)
labels <- NULL
labels[1:50] <- 'one'
labels[51:100] <- 'two'

x2 <- seq(from=12,to=32,by=0.01)
Val2 <- sample(x2,100)
raw <- data.frame(loc=Loc,value=Val,lab=labels)
smooth <- data.frame(loc=Loc,value=Val2,lab=labels)

pl <- ggplot(raw,aes(loc,value,colour=lab)) + geom_point() + geom_line(data=smooth)
print(pl)

结果看起来像这样:

在此处输入图片说明

问题在于我的实际数据包含如此多的数据点,以至于使用相同的调色板会非常混乱(点与线之间的差异几乎无法区分)。 最好让我使geom_lines()稍微暗一些。 我已经尝试过使用scale_colour_hue(l=40) ,但这也会导致geom_points()变得更暗。

感谢您的任何建议!

对于您,我没有一个完美的答案,但是我确实有一个可行的答案。 您可以通过将线条分为不同的几何形状来分别控制线条的颜色,如下所示:

ggplot(raw,aes(loc,value)) + 
geom_point(aes(col=lab)) + 
geom_line(data=smooth[smooth$lab=="one",], colour="blue", size=1) + 
geom_line(data=smooth[smooth$lab=="two",], colour="black", size=1)

图1

这样做的缺点是必须手动指定行选择,但是优点是可以手动指定每行的视觉属性。

另一种选择是使用相同的调色板,但使线条更大且部分透明,如下所示:

ggplot(raw,aes(loc,value,colour=lab)) + 
geom_point() + 
geom_line(data=smooth, size=2, alpha=0.5)

图2

您应该能够从此处自定义内容以适合您的需求。

您可以尝试通过在geom_point()设置alpha= value来使点变浅,而不是使线变暗。

pl <- ggplot(raw,aes(loc,value,colour=lab)) + geom_point(alpha=0.5) + 
      geom_line(data=smooth)
print(pl)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM