我对ggplot2中的传说有疑问。
假设我在两个农场有两种不同颜色的平均胡萝卜长度的假设数据集:
carrots<-NULL
carrots$Farm<-rep(c("X","Y"),2)
carrots$Type<-rep(c("Orange","Purple"),each=2)
carrots$MeanLength<-c(10,6,4,2)
carrots<-data.frame(carrots)
我制作一个简单的条形图:
require(ggplot2)
p<-ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) +
geom_bar(position="dodge") +
opts(legend.position="top")
p
我的问题是:有没有办法从图例中删除标题('类型')?
谢谢!
答案 0 :(得分:48)
您可以通过将其作为第一个参数传递给比例来修改图例标题。例如:
ggplot(carrots, aes(y=MeanLength, x=Farm, fill=Type)) +
geom_bar(position="dodge") +
theme(legend.position="top", legend.direction="horizontal") +
scale_fill_discrete("")
还有一个快捷方式,即labs(fill="")
由于您的图例位于图表顶部,因此您可能还希望修改图例方向。您可以使用opts(legend.direction="horizontal")
。
答案 1 :(得分:47)
我发现最好的选择是使用+ theme(legend.title = element_blank())
作为用户“gkcn”注明。
对于我(2015年3月26日),使用之前建议的labs(fill="")
和scale_fill_discrete("")
删除一个标题,只添加另一个没有用的图例。
答案 2 :(得分:29)
您可以使用labs
:
p + labs(fill="")
答案 3 :(得分:23)
对我有用的唯一方法是使用legend.title = theme_blank()
,我认为与labs(fill="")
和scale_fill_discrete("")
相比,这是最方便的变体,在某些情况下也很有用。< / p>
ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) +
geom_bar(position="dodge") +
opts(
legend.position="top",
legend.direction="horizontal",
legend.title = theme_blank()
)
P.S。 documentation中有更多有用的选项。
答案 4 :(得分:6)
你已经有了两个不错的选择,所以这是另一个使用scale_fill_manual()
。请注意,这也可以让您轻松指定条形的颜色:
ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) +
geom_bar(position="dodge") +
opts(legend.position="top") +
scale_fill_manual(name = "", values = c("Orange" = "orange", "Purple" = "purple"))
如果您使用的是ggplot2(版本1.0)的最新版本(截至2015年1月),则以下内容应该有效:
ggplot(carrots, aes(y = MeanLength, x = Farm, fill = Type)) +
geom_bar(stat = "identity", position = "dodge") +
theme(legend.position="top") +
scale_fill_manual(name = "", values = c("Orange" = "orange", "Purple" = "purple"))
答案 5 :(得分:1)
@pascal在comment中的解决方案中,将name
之类的比例函数的scale_fill_discrete
自变量设置为NULL
是我的最佳选择。它允许删除标题以及如果使用""
会保留的空白,同时允许用户有选择地删除标题,这是theme(legend.title = element_blank())
方法无法实现的。>
由于它被隐藏在评论中,因此我将其发布为可能提高其可见性的答案,并以@pascal表示赞誉。
TL; DR(用于复制粘贴):
scale_fill_discrete(name = NULL)