具有多个类别的单一图例的图例

时间:2019-01-10 13:11:48

标签: r ggplot2

所以我使用ggplot和plotly创建了以下图:

enter image description here

它是结合使用geom_bar和geom_point创建的。问题是,我想在一个传说中证明黑点是中位数,红条是平均值。有可能吗?我知道在几何图形中使用填充和形状很简单,但是在标注不同几何图形时我迷路了。

这是生成它的代码:

p <- ggplot(data=MoltdenDataset,aes(Level = LEVELNUMBER,Metric=value)) +
  geom_bar(data = MoltdenDataset[variable=="Average",] , aes(x=as.factor(LEVELNUMBER),y=value) , width = 0.5 , position = position_dodge(width=0.5) , stat="identity" , fill = "#FF4500") +
  geom_point(data = MoltdenDataset[variable=="Median",] , aes(x=as.factor(LEVELNUMBER),y=value))

1 个答案:

答案 0 :(得分:2)

您可能可以通过稍微滥用审美体系来取得一些进步。将点颜色设置为文字字符串“ Median”,并将颜色填充为“ Average”,然后使用scale_fill_manualscale_color_manual设置颜色:

p <- ggplot(data=MoltdenDataset,aes(Level = LEVELNUMBER,Metric=value)) +
  geom_bar(data = MoltdenDataset[variable=="Average",] , aes(x=as.factor(LEVELNUMBER),y=value, fill = 'Average') , width = 0.5 , position = position_dodge(width=0.5) , stat="identity") +
  geom_point(data = MoltdenDataset[variable=="Median",] , aes(x=as.factor(LEVELNUMBER),y=value, color = 'Median')) +
  scale_fill_manual(values = '#FF4500') +
  scale_color_manual(values = '#000000')

或者,您可以使用预期的键值(标签,x和y坐标)创建一个数据框,然后使用geom_text将其放入绘图中。