如何使ggplot图例准确反映条形

时间:2017-01-17 18:39:41

标签: r plot ggplot2 bar-chart legend

我有一个带有分组条形的ggplot条形图。每个x值有4个条形,条形填充,颜色和alpha由数据中的变量确定。我希望我的传奇能够准确反映情节中酒吧的外观。不幸的是,我没有足够的声誉来发布我的情节图片,但这是我的代码:

ggplot(all_frame_freq, aes(x = Frame, y = prop_type, group = interaction(speaker,Type), fill = Type, color = Type, alpha = speaker)) +  
  geom_bar(position = "dodge", stat="identity") +
  scale_fill_manual(values = c("#E41A1C","#377EB8"), name="Type", labels=c("A","B")) +
  scale_color_manual(values = c("#E41A1C","#377EB8"), guide=FALSE) +
  scale_alpha_manual(values = c(.2, 1), name="speaker", labels=c("1", "2"))

这会在所有条形图周围创建一条线,但该线条仅显示alpha所在的条形区域<1。因此,绘图显示为带有轮廓的亮条和没有轮廓的暗条。 (我发现这比简单的浅色和深色条更容易看。)我想要反映这一点的图例,这样扬声器1的图例框会出现一个类似相应条形的轮廓。但目前扬声器传奇只显示1的浅灰色框和2的深灰色框,我无法弄清楚如何仅在浅灰色框周围添加一条线。有没有办法做到这一点?我最接近的是添加

theme(legend.key = element_rect(color = 'black', size = 0.5))

但是在所有图例框周围添加了一条线。有没有办法将它添加到alpha图例中的一个框中,或者(可能更容易)添加到alpha图例,在那里我可以设置线条颜色以匹配较暗的框?我一直在尝试各种方法,并在很长一段时间内寻找想法,但尚未找到合适的解决方案。

我的数据样本 - 这次格式正确:

structure(list(Type = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L, 
2L), .Label = c("A", "B"), class = "factor"), Frame = structure(c(1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("V CP", "V NP"), class = "factor"), 
prop_type = c(0.209513024, 0.138731597, 0.017167382, 0.387528402, 
0.437998087, 0.144086707, 0.042695836, 0.398376853), speaker = structure(c(1L, 
1L, 2L, 2L, 1L, 1L, 2L, 2L), .Label = c("Speaker1", "Speaker2"
), class = "factor")), .Names = c("Type", "Frame", "prop_type", 
"speaker"), class = "data.frame", row.names = c(NA, -8L))

1 个答案:

答案 0 :(得分:1)

  

[C],扬声器传奇只是显示一个浅灰色的盒子为1和黑暗   灰色框为2,我无法弄清楚如何在周围添加一条线   只有浅灰色的盒子。

你可以做到

{{1}}

enter image description here