如何改变图例标题在ggplot

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

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

现在,我想将传说标题气孔导度修改为新的传奇头衔

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

+labs(colour="NEW LEGEND TITLE")

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

enter image description here

1061529 次浏览

这应该可以工作:

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

(或者)

p + scale_fill_discrete(name = "New Legend Title")

因为你有两个密度,我想你可能想用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"))

enter image description here

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

只需在图中添加一个guide_legend()调用。

ggplot(...) + ... + guide_legend(title="my awesome title")

ggplot文档所示。

如果这不起作用,你可以通过调用指南来更精确地设置引导参数:

ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))

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

我没有深入研究这个,但因为你在ggplot()中使用了填补=气孔导度

 + labs(color='NEW LEGEND TITLE')

可能没起作用。无论你用< em >填写< / em >替换< em > < / em >颜色,它都是有效的!

+ labs(fill='NEW LEGEND TITLE')

我在ggplot2_2.1.0中使用了这种方法

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

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

我在ggplot中使用facet_wrap,除了ArnaudA的解决方案外,没有一个建议的解决方案适合我:

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

上面的代码都不适合我。

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

labs(color = "sale year")

你也可以通过在结尾添加\n在标题和显示之间留出一个空格。

labs(color = 'sale year\n")

许多人花费大量时间更改标签、图例标签、标题和轴的名称,因为他们不知道可以在R中加载包含空格" "的表。然而,你可以这样做来节省时间或减少代码的大小,通过指定分隔符当你加载一个表,例如用制表符(或任何其他分隔符,而不是默认或单个空格):

read.table(sep = '\t')

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

read.csv()

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

为了添加到列表中(这里的其他选项对我不起作用),你还可以为ggplot使用update_labels函数:

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

这也将允许您更改x轴和y轴标签,使用单独的行:

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

我注意到有两种方法来改变/指定图例。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进行修改。

将此添加到混合,当你改变了颜色。这也适用于我的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

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

k$labels$fill ="New Legend Title"

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

k$labels$size ="Size of points"

它会改变标签标题。

唯一适合我的解决方案: p + guides(fill=guide_legend("New title") < / p >