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

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")

现在,我想把传说标题从cond修改为NEW legend title。

所以,我只是添加了下面的行添加上述代码的结尾:

+labs(colour="NEW LEGEND TITLE")

但这并不奏效。正确的做法是什么?


当前回答

我注意到有两种方法来改变/指定图例。ggboxplot()的标题:

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)

代码基于GitHub中的示例进行修改。

其他回答

因为在你的代码中,你使用了ggplot(data, fill= cond)来创建直方图,你需要添加图例标题,同时在标签部分使用“fill”,即+实验室(fill=“标题名称”)。如果您正在使用不同类型的绘图,其中代码是ggplot(data, color = cond),那么您可以使用+实验室(color = "Title Name")。总之,lab参数必须与aes参数匹配。

我已经使用+ guides(fill=guide_legend("my awesome title"))来改变geom_bar图上的传说标题,但它似乎不适用于geom_point。

唉,这些解决方案对我都不起作用。我正在使用brms::conditional_effects()的输出。

我的解决方案需要:

+实验室(fill = "新标题",color = "新标题",labels = "新标题")

因为你有两个密度,我想你可能想用scale_fill_manual设置自己的颜色。

如果是这样,你可以这样做:

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"))

唯一对我有效的办法是: p + guides(fill=guide_legend("New title"))

我要告诉你的方法,将允许你用一个公式来改变图例,轴,标题等的标签,你不需要使用记忆多个公式。这不会影响字体风格或标签/标题和轴的文本设计。

下面是我对这个问题的完整回答。

 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

我已经将ggplot输出存储在变量“k”中。你可以给它取任何你喜欢的名字。后来我用过

k$labels$fill ="New Legend Title"

更改图例。“fill”用于显示不同颜色的标签。如果你有标签显示大小,比如1点代表100,其他点代表200等等,那么你可以使用这样的代码-

k$labels$size ="Size of points"

它会改变标签标题。