在ggplot中更改图例形状的填充 [英] Changing fill of legend shape in ggplot

查看:80
本文介绍了在ggplot中更改图例形状的填充的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个相当复杂的图,它在我的数据中显示了三个不同的变量-请参见下面的示例图.我删除了其中一个图例,并试图通过填充正方形来更清楚地显示辅音的颜色.我已经尝试过使用 guide_legend(override.aes()),但是我找不到一种调整颜色的方法.有办法吗?

I have a rather complicated plot that shows three different variables in my data - see the example plot below. I've removed one of the legends and am trying to show the consonant colours more clearly by filling in the squares. I've tried using guide_legend(override.aes()) but I can't find a way to adjust the colours on this. Is there a way to do it?

示例数据为:

 exampledata <- tribble(~subject, ~group, ~time, ~consonant, ~type,  ~n,
                   "1", "A", 1, "p", F, 10,
                   "1", "A", 1, "t", T, 12,
                   "1", "A", 1, "k", T, 50,
                   "2", "A", 1, "p", T, 0,
                   "2", "A", 1, "t", T, 45,
                   "2", "A", 1, "k", F, 23,
                   "2", "A", 2, "p", F, 2,
                   "2", "A", 2, "t", T, 34,
                   "2", "A", 2, "k", T, 56,
                   "3", "B", 1, "p", F, 12,
                   "3", "B", 1, "t", T, 13,
                   "3", "B", 1, "k", F, 50,
                   "4", "A", 1, "p", T, 10,
                   "4", "A", 1, "t", F, 12,
                   "4", "A", 1, "k", T, 50,
                   "5", "B", 1, "p", T, 0,
                   "5", "B", 1, "t", T, 24,
                   "5", "B", 1, "k", F, 3,
                   "5", "B", 2, "p", F, 23,
                   "5", "B", 2, "t", F, 12,
                   "5", "B", 2, "k", T, 7,
                   "6", "A", 1, "p", F, 52,
                   "6", "A", 1, "t", F, 12,
                   "6", "A", 1, "k", T, 64
 )  

还有我到目前为止所拥有的 ggplot 代码:

And the ggplot code that I have so far:

 exampleplot <- ggplot(exampledata, aes(x = time, y=n, 
                       fill=type, colour = consonant))  +  
   geom_col(lwd = 1, aes(linetype = group)) +
   scale_linetype_manual(values = c("A" = "solid", 
                                    "B" = "twodash"), guide = F) +
   facet_grid(~subject, scales = "free_x", switch = "x") + 
   scale_fill_manual(values=c("gray97", "gray77"), 
                     labels = c("Type 1", "Type 2")) +
   theme_bw(base_size = 18) + 
   theme(strip.text.x = element_text(angle=75),
         axis.text.x  = element_blank(),
         axis.ticks.x = element_blank(),
         panel.border =element_blank(),
         strip.background = element_blank())

 plot(exampleplot)

推荐答案

exampleplot <- ggplot(exampledata, aes(x = time, y=n, 
                       alpha=type, fill = consonant, color = consonant))  +  
   geom_col(lwd = 1, aes(linetype = group)) +
   scale_linetype_manual(values = c("A" = "solid", 
                                    "B" = "twodash"), guide = F) +
   facet_grid(~subject, scales = "free_x", switch = "x") + 
   scale_alpha_discrete(range=c(0.4,0.8), 
                    labels = c("Type 1", "Type 2")) +
   theme_bw(base_size = 18) + 
   theme(strip.text.x = element_text(angle=75),
         axis.text.x  = element_blank(),
         axis.ticks.x = element_blank(),
         panel.border =element_blank(),
         strip.background = element_blank())

 plot(exampleplot)

我在 aes alpha 中添加了 fill ,以保持 Type 之间的差异.您要用实心平方输出吗?

I added a fill in the aes and alpha to keep the differences between Type. Is this the output you want with filled squared?

这篇关于在ggplot中更改图例形状的填充的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆