ggplot 密度图 alpha 未在图例中呈现
Posted
技术标签:
【中文标题】ggplot 密度图 alpha 未在图例中呈现【英文标题】:ggplot density plot alpha not rendered in legend 【发布时间】:2018-09-20 10:37:01 【问题描述】:我正在尝试使用 ggplot 生成密度图,其中绘图的颜色和填充由一个参数确定,填充的 alpha 由第二个参数确定。
我可以让图形以我想要的方式呈现,但在图例中没有描述 alpha 的值。
由于我将 alpha 的值设置为 0 和 0.3,我希望图例会显示具有相应不透明度的框(即白色和灰色)。而是有两个具有相同不透明度的框。
任何建议将不胜感激。
我用 mtcars 的示例图重新创建了问题
ggplot(
mtcars,
aes(
x=wt,
fill=factor(cyl),
color=factor(cyl),
alpha=factor(am)
)
) +
geom_density() +
scale_alpha_discrete(
name="transmission",
labels=c("auto","manual"),
range = c(0,0.3)
) +
theme_bw()
【问题讨论】:
我建议使用不同的linetype
s 或facets
而不是alpha
。
感谢您的建议。我已经在图中使用构面来分离出一个参数,但是更改线型是个好主意。为了美观,我希望用 alpha 来做到这一点。
【参考方案1】:
传输 (factor(am)) 没有与之关联的颜色,只有 alpha 级别。因此,图例显示了白色的 0% 和 30% 透明度,这是默认颜色。所以 alpha 被渲染了,但你只是看不到它。您可以通过在图例中使用例如黑色填充传输来解决此问题。
ggplot(
mtcars,
aes(
x=wt,
fill=factor(cyl),
color=factor(cyl),
alpha=factor(am)
)
)+
geom_density()+
scale_alpha_discrete(
name="transmission",
labels=c("auto","manual"),
range = c(0,0.3)
)+
theme_bw()+
guides(alpha = guide_legend(override.aes = list(fill = c('black','black'))))
【讨论】:
谢谢,我认为解决方案在于override.aes
,但我不知道如何实现它。我试过override.aes = list( alpha = c(0, 0.3))
,但这只是在复制我已经看到的内容。以上是关于ggplot 密度图 alpha 未在图例中呈现的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用ggplot2包使用geom_density()函数绘制分组密度图(改变图例位置移除图例)实战(density plot)
R语言ggplot2可视化热力图(密度图)并使用scale_fill_continuous函数自定义图像的色彩梯度(colour gradient)自定义设置图例中的色彩梯度反序(reverse)