如何在ggplot2中更改图例的标题?[关闭]


58

我在ggplot2中绘制了一个图表,以汇总来自2 x 4 x 3单元格数据集的数据。我已经能够使用制作2级变量的面板,并使用facet_grid(. ~ Age)来设置x和y轴aes(x=4leveledVariable, y=DV)aes(group=3leveledvariable, lty=3leveledvariable)到目前为止,我以前一直在制作情节。这给了我一个由2级变量覆盖的可视化效果,X轴代表4级变量,并且在面板上为3级变量绘制了不同的线。但是3级变量的键以3级变量的名称作为标题,我希望它成为一个具有字符空间的标题。如何重命名图例的标题?

我尝试过的东西似乎不起作用(abp我的ggplot2对象在哪里):

 abp <- abp + opts(legend.title="Town Name")
 abp <- abp + scale_fill_continuous("Town Name")
 abp <- abp + opts(group="Town Name")
 abp <- abp + opts(legend.title="Town Name")

示例数据:

ex.data <- data.frame(DV=rnorm(2*4*3), V2=rep(1:2,each=4*3), V4=rep(1:4,each=3), V3=1:3)

2
@drknexus-如果您可以共享数据,这将有所帮助,或者指向R中具有与数据相同形状的相似数据集。
大通

1
这里的每个人似乎都很知识渊博,但我知道与ggplot相关的问题,我发现他们的Google小组非常有用。 groups.google.com/group/ggplot2
Dason 2010年

除了Hadley页面上众所周知的出色文档之外,Git Hub上不为人所知的参考文献确实有助于解决此类问题。
hans0l0 2011年

或者,theme_get()在控制台中为您提供相同的参考。
Brandon Bertelsen

1
响应于要求进行SO迁移的几个标志,实际上是不可能的。看到为什么SO.meta:meta.stackexchange.com/q/8004/150510meta.stackexchange.com/q/151890/150510
chl

Answers:


25

另一种选择是使用

p + labs(aesthetic='custom text')     

例如,Chase的示例如下所示:

library(ggplot2)

ex.data <- data.frame(DV=rnorm(2*4*3),V2=rep(1:2,each=4*3),V4=rep(1:4,each=3),V3=1:3)
p <- qplot(V4, DV, data=ex.data, geom="line", group=V3, linetype=factor(V3)) + facet_grid(. ~ V2)
p + labs(linetype='custom title')

并得出图: 在此处输入图片说明


如今,与按比例/轴/比例/轴指定标签相比,我更倾向于使用labs()修改标签。
russellpierce 2014年

38

您可以通过修改图例的比例来更改图例的标题。这是使用二氧化碳数据集的示例

library(ggplot2)

p <- qplot(conc, uptake, data = CO2, colour = Type) + scale_colour_discrete(name = "Fancy Title")
p <- p + facet_grid(. ~ Treatment)
p 

编辑:

使用上面的示例数据,这是一个可行的解决方案。我认为这模仿了@drknexus试图创建的情节。附带说明一下,如果有人能解释为什么我们必须将V3视为映射到图例的一个因素,我将不胜感激。

p <- qplot(V4, DV, data = ex.data, geom = "line", group = V3, lty = factor(V3)) 
p <- p + scale_linetype_discrete(name = "Fancy Title") + facet_grid(. ~ V2)
p 

替代文字


我想我缺少的是像scale_color_discrete这样的函数,它与ggplot(data = ex.daata,aes(x = V4,y = DV,group = V3,lty = V3)中的“ group”或“ lty”规范相关联))
russellpierce's

1
嗯,我发现它:scale_linetype_discrete(NAME = “鲍勃”)
russellpierce

@Chase:使用scale_linetype_discrete位进行编辑,我将接受您的回答。
russellpierce

1
@drknexus-问题在我的工作示例中,适当的命令是,scale_colour_discrete()并且您正在使用的代码显然有所不同。我不知道该代码是什么...
Chase

3
@Chase Re:“为什么我们必须将V3当作一个因子”,scale_linetype_discrete期望变量具有离散值(因子或字符,来自plyr::is.discrete),请查看Github上的src代码,j.mp / ejaRRT。好评(+1)。
chl 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.