我最近在这里提出了一个问题,它使我能够为ggplot2
中的geom_point()
添加具有可自定义颜色和粗细的边框。不可否认,这有点像一个hack,现在我遇到了一些问题,可能是由此引起的。边框是通过叠加两个geom_point()
生成的,其中一个是我想要的边框颜色,并且稍微大于提供“填充”的geom_point()
。下面是一个可重现的示例:
require('ggplot2')
values <- rnorm(n = 10, mean = 1, sd = 0.5) + c(1:10)
df <- data.frame(id = rep(c('hq', 'lq'), each = 5),
values = values,
period = rep(c(1:5), 2))
plot <-
ggplot(df, aes(x = period,
y = values,
group = id,
shape = id,
color = id)) +
geom_line(color = 'gray40') +
geom_point(color = 'gray24',
size = 4) +
geom_point(size = 3) +
guides(shape = guide_legend(override.aes = list(size = 5))) +
scale_color_manual(values = c('lightskyblue1', 'lightpink'),
labels = c('HQ', 'LQ')) +
scale_shape_manual(values = c(15, 17, 0, 2),
labels = c('HQ', 'LQ')) +
theme_bw()
因为我希望图例符号比绘图符号更大,所以我使用了
override.aes()
。然而,这意味着我创建的“边框”不会出现在图例中:override.aes()
多个size
参数,以便在图例中保留我在绘图中使用的分层(即图例符号也包含“边框”)?
pch 21-25
的存在。问题在于,虽然在这个小例子中边框看起来很好,但我生成的实际图形具有更小的形状和更多的数据点,这使得pch
边框过于粗厚。这就是为什么我选择了这个“hack”修复方法。如果您知道如何修改pch 21-25
形状的边框大小,那就太好了! - thagzonealpha = list(1, 1, .5)
调整 alpha 值。谁知道只需要使用c(1, 1, .5)
就可以了。 - o_vstroke
来设置点标记的边框厚度(例如,stroke=0.3
)。 - eipi10