如何修改ggplot图例使fill映射为正方形、linetype映射显示为线条
解决方法
直接通过guides()函数分别配置两个美学映射的图例样式即可,修改后代码如下:
library(ggplot2) ggplot(mtcars, aes(mpg, disp, fill = "fill")) + geom_violin(aes(linetype = "pattern"), key_glyph = draw_key_path) + guides( # fill图例保留默认正方形填充样式 fill = guide_legend(order = 1), # linetype图例去掉填充背景 linetype = guide_legend( order = 2, override.aes = list(fill = NA) ) )
说明
- 之前linetype的图例显示正方形背景,是因为默认继承了全局的fill映射值,即使指定了线条类型的key glyph,仍然会带填充色块
override.aes = list(fill = NA)的作用是将linetype图例标识的填充属性设置为透明,最终只会显示对应样式的线条- 你可以通过
order参数调整两个图例的前后排序顺序,也可以在override.aes里额外指定colour参数修改线条的显示颜色
内容的提问来源于stack exchange,提问作者John-Henry
相关产品推荐
相关产品推荐

