如何为 geom_hline 添加自定义图例
Posted
技术标签:
【中文标题】如何为 geom_hline 添加自定义图例【英文标题】:How to add a custom legend for geom_hline 【发布时间】:2013-06-10 04:22:47 【问题描述】:使用下面的数据,请注意图例没有正确描述 geom_hline:
df<-data.frame(
points=c(.153,.144,.126,.035, .037, .039, .010,.015,.07),
days=gl(3,1,9,labels=c("Sun","Mon","Tues")),
lang=c("en","en","en","pt","pt","pt","ko","ko","ko"))
ggplot(data=df[df$lang=="en",])+
geom_point(aes(x=days,y=points),size=5,colour='cyan',show_guide=F)+
geom_point(aes(x=days,y=points,colour=days),size=4,show_guide=F)+
facet_wrap(~lang,ncol=1,scales="free")+
xlab("")+
ylab("")+
scale_y_continuous(labels = percent_format())+
theme(legend.position="right",
legend.title = element_blank(),
strip.text.x = element_text(size = 13, colour = 'black', angle = 0),
axis.text.x=element_text(angle=0, hjust=.5, vjust=0),
legend.position = 'none',
panel.background = element_rect(fill = "#545454"),
panel.grid.major = element_line(colour = "#757575"),
panel.grid.minor = element_line(colour = "#757575"))+
geom_hline(yintercept=.136,color='cyan',size=2, show_guide=T)
有什么方法可以创建描述 geom_hline 的自定义图例吗? [我希望图例的名称为“Legend”,只有一个值标记为“avg”]
搜索了一下,我找到了一个例子:ggplot legend showing transparency and fill color。他们使用了我尝试过的 scale_fill_manual,但无法改进上面显示的图例。
【问题讨论】:
【参考方案1】:这有点尴尬,但这似乎有效:
hline <- data.frame(yint = 0.136,lt = 'Avg')
ggplot(data=df[df$lang=="en",])+
geom_point(aes(x=days,y=points),size=5,colour='cyan')+
geom_point(aes(x=days,y=points,colour=days),size=4)+
facet_wrap(~lang,ncol=1,scales="free")+
xlab("")+
ylab("")+
scale_y_continuous(labels = percent_format())+
theme(legend.position="right",
legend.title = element_blank(),
strip.text.x = element_text(size = 13, colour = 'black', angle = 0),
axis.text.x=element_text(angle=0, hjust=.5, vjust=0),
legend.position = 'none',
panel.background = element_rect(fill = "#545454"),
panel.grid.major = element_line(colour = "#757575"),
panel.grid.minor = element_line(colour = "#757575"))+
geom_hline(data = hline,aes(yintercept=yint,linetype = lt),color = "cyan",size=2,show_guide = TRUE) +
scale_colour_discrete(guide = "none") +
scale_linetype_manual(name = 'Legend',values = 1,guide = "legend")
啊,但你已经在其中包含了legend.title = element_blank()
,这就是为什么没有命名图例的原因。删除它以包含名称。
【讨论】:
以上是关于如何为 geom_hline 添加自定义图例的主要内容,如果未能解决你的问题,请参考以下文章
如何为 UITableView 添加自定义 EditingAccessoryView?
使用循环在构面中创建多个 geom_hline 对象时,如何有效地创建手动图例?