ggplot:手动为未映射的美学添加图例

时间:2015-11-10 16:46:46

标签: r ggplot2

我想制作一个覆盖有圆点的条形图,其中两个都有单独的图例。另外,我想使用aes()之外的参数选择条形的颜色和点的大小。由于两者都未映射,因此不会生成任何图例。

1)如何手动为填充和尺寸添加图例?

library(ggplot2)

d <- data.frame(group = 1:3,    
                prop = 1:3 )

ggplot(d, aes(x=group, y=prop)) +
  geom_bar(stat="identity", fill="red") +
  geom_point(size=5)

这就是我提出的:我使用虚拟映射并根据我的需要修改了图例。但这种方法对我来说显得很笨拙。

2)是否有手动方式说:添加带有此标题的图例,这些形状,这些颜色等?

d <- data.frame(dummy1="d1",
                dummy2="d2",
                group = 1:3,    
                prop = 1:3 )


ggplot(d, aes(x=group, y=prop, fill=dummy1, size=dummy2)) +
  geom_bar(stat="identity", fill="red") +
  geom_point(size=5) +
  scale_fill_discrete(name="fill legend", label="fill label") +
  scale_size_discrete(name="size legend", label="size label")

上面我将fill映射到dummy1。所以我希望scale_fill_discrete改变这个传说。但它似乎会修改size图例。

3)我不确定这里出了什么问题。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我不确定你为什么说&#34;另外,我想用aes()&#34;之外的参数选择条形的颜色和点的大小。这是你正在尝试做的事情,还是你必须要做的事情,因为ggplot是如何工作的?

如果它是后者,那么一个解决方案就是 -

library(ggplot2)

d <- data.frame(group = 1:3,    
                prop = 1:3 )

ggplot(d, aes(x=group, y=prop)) +
    geom_bar(stat="identity",aes( fill="label")) +
    geom_point(aes(size='labelsize')) +
    scale_fill_manual(breaks = 'label', values = 'red')+
    scale_size_manual(breaks = 'labelsize', values = 5)