如何突出ggplot上的线条而不会丢失颜色编码

时间:2018-04-05 16:32:27

标签: r ggplot2 data-visualization

这个问题是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的建议,在彩色照片下面绘制一条黑线是我想要的,但会产生一种难看的混叠效果(对于锐角线特别清晰),无论图像的大小如何都会持续存在(见下图)。有什么建议可以解决这个问题,还是只是我系统的一个特定问题?

Overlapping geom_smooth lines show ugly aliasing effect

2 个答案:

答案 0 :(得分:3)

您可以根据需要调整两项建议:

  1. 使点数有点透明
  2. 通过在
  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')
    

    enter image description here

    要处理重叠行的别名,请尝试使用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()

http://www.sthda.com/english/wiki/ggplot2-line-types-how-to-change-line-types-of-a-graph-in-r-software#change-manually-the-appearance-of-lines