gpt4 book ai didi

r - 在具有分层符号 (R) 的 ggplot2 中使用 override.aes()

转载 作者:行者123 更新时间:2023-12-03 19:30:50 25 4
gpt4 key购买 nike

我最近asked a question这里允许我为 geom_point() 添加边框在 ggplot2 中具有可定制的颜色和厚度。诚然,这有点像黑客,我现在遇到了一些麻烦,这可能是由此造成的。边框由两个 geom_point() 分层生成s,其中之一是我想要的边框颜色,比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() .但是,这意味着我创建的“边界”不会出现在图例中:

enter image description here

有没有办法给多个 size override.aes() 的参数以便我在图中使用的分层在图例中保持不变(即图例符号也包含“边框”)?

最佳答案

您只需调用 geom_point 即可完成此操作。如果您使用带有边框和填充的点标记(pch 值从 21 到 25;参见 ?pch)。然后,您可以使用 override.aes 设置图例标记的大小。并且边框和填充将始终正确显示。例如:

ggplot(dat, aes(x = period,
y = values,
group = id,
shape = id,
fill=id)) +
geom_line(color = 'gray40') +
geom_point(size=4) +
guides(shape = guide_legend(override.aes = list(size = 5))) +
scale_fill_manual(values = c('lightskyblue1', 'lightpink'),
labels = c('HQ', 'LQ')) +
scale_shape_manual(values = c(22,24), # These are the marker shapes
labels = c('HQ', 'LQ')) +
theme_bw()

这会导致点标记(默认值,但您可以更改它)和您指定的填充颜色出现黑色边框。

enter image description here

更新:作为对您的评论的回应,以下是在不对原始代码进行任何其他更改的情况下获取图例标记上的黑色边框的方法:
  guides(shape = guide_legend(override.aes = 
list(size = 5, shape=c(22,24),
colour="black",
fill=c('lightskyblue1', 'lightpink')))) +

关于r - 在具有分层符号 (R) 的 ggplot2 中使用 override.aes(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29307725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com