R 如何更改ggplot中的图例标题

R 如何更改ggplot中的图例标题,r,plot,ggplot2,R,Plot,Ggplot2,我有下面的情节。 它是使用以下命令创建的: library(ggplot2) df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)), rating = c(rnorm(200), rnorm(200, mean=.8))) ggplot(df, aes(x=rating, fill=cond)) + geom_density(alpha = .3) + xlab("NEW RATI

我有下面的情节。 它是使用以下命令创建的:

library(ggplot2)

df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)), 
                 rating = c(rnorm(200), rnorm(200, mean=.8)))

ggplot(df, aes(x=rating, fill=cond)) + 
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")
但它不起作用。正确的方法是什么

这应该可以:

p <- ggplot(df, aes(x=rating, fill=cond)) + 
           geom_density(alpha=.3) + 
           xlab("NEW RATING TITLE") + 
           ylab("NEW DENSITY TITLE")
p <- p + guides(fill=guide_legend(title="New Legend Title"))

因为你有两种密度,我想你可能想用
比例\填充\手册
设置你自己的颜色

如果是这样,您可以:

df <- data.frame(x=1:10,group=c(rep("a",5),rep("b",5)))

legend_title <- "OMG My Title"

ggplot(df, aes(x=x, fill=group)) + geom_density(alpha=.3) +   
    scale_fill_manual(legend_title,values=c("orange","red"))

df还有一个非常简单的答案,可以用于一些简单的图形

只需在图形中添加对guide_legend()的调用

ggplot(...) + ... + guide_legend(title="my awesome title")
如图所示,非常漂亮

如果不起作用,您可以通过调用以下命令更精确地设置指南参数:


您还可以通过为调用
指南指定这些参数来改变形状/颜色/大小。

我没有深入研究这个问题,但因为您在ggplot()中使用了fill=cond

可能不管用。无论您如何用填充替换颜色,它都可以工作

+ labs(fill='NEW LEGEND TITLE') 

这在ggplot2_2.1.0中对我很有用,因为在代码中,您使用了
ggplot(data,fill=cond)
来创建直方图,您需要在标签部分也使用“fill”来添加图例标题,即
+labs(fill=“title name”)
。如果使用代码为ggplot(数据,color=cond)的不同类型的绘图,则可以使用
+labs(color=“Title Name”)
。总之,lab参数必须与aes参数匹配


我使用了
+指南(fill=guide\u legend(“我最棒的标题”))
来更改geom\u条形图上的图例标题,但它似乎对geom\u point不起作用。

我在ggplot中使用了一个facet\u wrap,除了ArnaudA的解决方案外,所有建议的解决方案对我都不起作用:

qplot(…) + guides(color=guide_legend(title="sale year")) 

上面的代码都不适合我

这是我发现的,它起作用了

labs(color=“销售年份”)

您还可以通过在末尾添加
\n
在标题和显示之间留出一个空格


labs(color='sale year\n”)
许多人花费大量时间更改标签、图例标签、标题和轴的名称,因为他们不知道可以在R中加载包含空格的表
”“
。但是,您可以这样做以节省时间或减少代码的大小,方法是在加载以制表符(或默认分隔符或单个空格以外的任何其他分隔符)分隔的表时指定分隔符:

或者使用csv格式的默认加载参数:

read.csv()
这意味着您可以直接将名称
“NEW LEGEND TITLE”
保留为原始数据文件中的列名(标题),以避免在每个绘图中指定新的图例标题。

只需添加到列表中(此处的其他选项不适用于我),您还可以使用函数update\u labels for ggplot:

p <- ggplot(df, aes(x=rating, fill=cond)) + 
           geom_density(alpha=.3) + 
           xlab("NEW RATING TITLE") + 
           ylab("NEW DENSITY TITLE")
这也将允许您更改x轴和y轴标签,使用单独的线:

update_labels(p, list(x="NEW X LABEL",y="NEW Y LABEL")

我注意到有两种方法可以更改/指定ggboxplot()的legend.title:

库(ggpubr)

bxp.defaultLegend
ggplot(df)+labs(legend='')
将此添加到混合中,用于更改颜色时。这对我来说也适用于两个离散变量的qplot:

p+ scale_fill_manual(values = Main_parties_color, name = "Main Parties")

我要告诉你的是,你可以用一个公式来更改图例、轴、标题等的标签,而不需要记忆多个公式。这不会影响字体样式或标题和轴的标签/文本的设计

我将给出以下问题的完整答案

 library(ggplot2)
 rating <- c(rnorm(200), rnorm(200, mean=.8))
 cond <-factor(rep(c("A", "B"), each = 200))
 df <- data.frame(cond,rating 
             )

 k<- ggplot(data=df, aes(x=rating, fill=cond))+ 
 geom_density(alpha = .3) +
 xlab("NEW RATING TITLE") +
 ylab("NEW DENSITY TITLE")

 # to change the cond to a different label
 k$labels$fill="New Legend Title"

 # to change the axis titles
 k$labels$y="Y Axis"
 k$labels$x="X Axis"
 k
更改图例。“填充”用于显示不同颜色的标签。如果您有显示大小的标签,如1点表示100,其他点表示200等,那么您可以像这样使用此代码-

k$labels$size ="Size of points"


它将更改标签标题。

labs(fill=“xyz”)
应该do@User632716它已经存在于某人的答案中,belowit不起作用……对于那些寻找包含多个
geom\uu
语句的绘图的答案的人,我建议答案在,这是唯一一个对我有效的方法。请注意,对于其他类型的图形(当你在aes中使用“颜色”而不是“填充”时),OP问题代码已经有效了。”“颜色”已经正确,而不是“填充”!我尝试所有的答案都快发疯了,我的答案就在这个问题上!;)这对我不起作用,但是
qplot(…)+guides(color=guide\u legend(title=“sale year”)
worked另一种选择是
p$labels$fill
p$labels$fill与scale\u fill\u discrete
p$labels$fill
之间的区别对我不起作用。使用
ggplot2_2.1.0
我使用
p$labels$color
p$labels$fill
很好,但是如果在aes中使用多个美学变量(线型、颜色、形状),则必须分别对每个变量进行更改。我认为这是最具挑战性的答案,它完全符合OP的要求,在MOST处增加一行color=和fill=都应该起作用。这是问题的“正确”答案,填充颜色是否有效取决于“cond”(或其他情况下的组)真正映射到的是什么。这是最好的答案。注意:在ggplot2 3.0+中,此解决方案不起作用:通过
p+guides(fill=guide\u legend(title=“New legend title”)
…解决,但对于
geom\u point()
,这对我有效:
指南(color=guide\u legend(“Type”)
@knb,您的方法有效:
指南(color=guide\u legend(“分数排名”)
这有什么不同吗?这有什么不同吗?是的,我尝试了上面的每一个例子,这是唯一一个对我有效的例子。谢谢!鉴于原始帖子的问题,这将如何工作,似乎
填充
而不是
颜色
(或
颜色
)是否需要?考虑到问题的时间,它可能与版本相关。@merv主要区别在于此版本确实有效。请删除“OMG”
p <- ggplot(df, aes(x=rating, fill=cond)) + 
           geom_density(alpha=.3) + 
           xlab("NEW RATING TITLE") + 
           ylab("NEW DENSITY TITLE")
update_labels(p, list(colour="MY NEW LEGEND TITLE")
update_labels(p, list(x="NEW X LABEL",y="NEW Y LABEL")
library(ggpubr)

bxp.defaultLegend <- ggboxplot(ToothGrowth, x = "dose", y = "len",
                               color = "dose", palette = "jco")

# Solution 1, setup legend.title directly in ggboxplot()
bxp.legend <- ggboxplot(ToothGrowth, x = "dose", y = "len",
                 color = "dose", palette = "jco", legend.title="Dose (mg)")

# Solution 2: Change legend title and appearnace in ggboxplot() using labs() and theme() option:
plot1 <-  bxp.defaultLegend + labs(color = "Dose (mg)") +
  theme(legend.title = element_text(color = "blue", size = 10), legend.text = element_text(color = "red"))

ggarrange(list(bxp.legend, bxp.defaultLegend, plot1), nrow = 1, ncol = 3,  common.legend = TRUE)
p+ scale_fill_manual(values = Main_parties_color, name = "Main Parties")
 library(ggplot2)
 rating <- c(rnorm(200), rnorm(200, mean=.8))
 cond <-factor(rep(c("A", "B"), each = 200))
 df <- data.frame(cond,rating 
             )

 k<- ggplot(data=df, aes(x=rating, fill=cond))+ 
 geom_density(alpha = .3) +
 xlab("NEW RATING TITLE") +
 ylab("NEW DENSITY TITLE")

 # to change the cond to a different label
 k$labels$fill="New Legend Title"

 # to change the axis titles
 k$labels$y="Y Axis"
 k$labels$x="X Axis"
 k
k$labels$fill ="New Legend Title"
k$labels$size ="Size of points"