这个问题是R绘图和零件图形设计。我使用ggplot2
制作散点图来比较3种不同的种群。我想显示个别点以及线性回归线,并且为了进行比较,它们都必须位于同一个图上。
问题是这些点的绘制非常密集,当回归线与它们混合在一起的点颜色相同时,很难看到它。但是,由于一些人群重叠,如果我将线条全部变成黑色,就不可能看出哪个与哪个相符。
我想要的是一种突出回归线的方法,可能通过用黑色边框勾勒出来,或者使它成为相同颜色的深色阴影,这样它就可以在点的背景下突出。这是下面的一个例子。我已经在这里夸大了过度绘图,但是缩小它们或减少alpha并没有帮助(我已经尝试过了)。
library(ggplot2)
df <- data.frame('x' = c(rnorm(1000, 1),
rnorm(1000, 2),
rnorm(1000, 1)),
'y' = c(rnorm(1000, 1),
rnorm(1000, 2),
rnorm(1000, 1)),
'z' = factor(c(rep_len(1, 1000),
rep_len(2, 1000),
rep_len(3, 1000))))
# To make the angle of this line sharp
df$y[2000:3000] <- df$y[2000:3000] + df$x[2000:3000]
ggplot(data = df) +
geom_point(aes(x = x, y = y, color = z), size = 3) +
geom_smooth(aes(x = x, y = y, color = z), method = 'lm', size = 2, fill = NA) +
scale_color_brewer(palette = 'Set1')
编辑:根据@Gregor的建议,在彩色照片下面绘制一条黑线是我想要的,但会产生一种难看的混叠效果(对于锐角线特别清晰),无论图像的大小如何都会持续存在(见下图)。有什么建议可以解决这个问题,还是只是我系统的一个特定问题?
答案 0 :(得分:3)
您可以根据需要调整两项建议:
这是两者的结果。我还缩小了点和线的大小。
ggplot(data = df) +
geom_point(aes(x = x, y = y, color = z),
size = 1, alpha = 0.4) +
geom_smooth(aes(x = x, y = y, group = z),
color = "black", method = 'lm', size = 1.3, fill = NA) +
geom_smooth(aes(x = x, y = y, color = z), method = 'lm', size = 1.1, fill = NA) +
scale_color_brewer(palette = 'Set1')
要处理重叠行的别名,请尝试使用cairoDevice
包。
答案 1 :(得分:0)
我相信链接会比我更好地回答。
您应该使用scale_color_manual()
手动为点着色,或者在geom_point()
设置alpha = 0.4或其他内容以使点透明。
http://www.sthda.com/english/wiki/ggplot2-colors-how-to-change-colors-automatically-and-manually
您也可以更改形状和大小,以区分群体中的人口或关键人物。 http://www.sthda.com/english/wiki/ggplot2-point-shapes
对于该行,您可以手动调整,并使用scale_color_manual()
,scale_size_manual()
或scale_linetype_manual()
。