[英]How to change legend title in 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")
现在,我想将图例标题从cond修改为NEW LEGEND TITLE 。
所以,我只是在上面的代码末尾添加了以下行:
+labs(colour="NEW LEGEND 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"))
(或替代)
p + scale_fill_discrete(name = "New Legend Title")
我没有深入研究这个,但是因为你在 ggplot() 中使用了fill=cond ,
+ labs(color='NEW LEGEND TITLE')
可能没有用。 然而,你用填充替换颜色,它的工作原理!
+ labs(fill='NEW LEGEND TITLE')
这在 ggplot2_2.1.0 中对我有用
由于您有两种密度,我想您可能想使用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"))
以上代码都不适合我。
这是我发现的,并且有效。
labs(color = "sale year")
您还可以通过在末尾添加\\n
在标题和显示之间留出一个空格。
labs(color = 'sale year\\n")
由于在您的代码中您使用了ggplot(data, fill= cond)
创建直方图,因此您还需要在标签部分使用“fill”来添加图例标题,即+labs(fill="Title name")
。 如果您使用的是代码为 ggplot(data, colour= cond) 的不同类型的图,那么您可以使用+labs(colour= "Title Name")
。 总之,lab 参数必须与 aes 参数匹配。
我已经使用+ guides(fill=guide_legend("my awesome title"))
来更改 geom_bar 图中的图例标题,但它似乎不适用于 geom_point。
还有另一个非常简单的答案可以用于一些简单的图形。
只需在您的图表中添加对 guide_legend() 的调用。
ggplot(...) + ... + guide_legend(title="my awesome title")
如非常好的ggplot 文档所示。
如果这不起作用,您可以通过调用guides更精确地设置您的指南参数:
ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))
您还可以通过为guides
调用指定这些参数来改变形状/颜色/大小。
我在我的 ggplot 中使用了 facet_wrap,除了 ArnaudA 的解决方案之外,没有任何建议的解决方案对我有用:
qplot(…) + guides(color=guide_legend(title="sale year"))
只是为了添加到列表中(此处的其他选项对我不起作用),您还可以将函数 update_labels 用于 ggplot:
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() 的 Legend.title:
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)
许多人花费大量时间更改标签、图例标签、标题和轴名称,因为他们不知道可以在 R 中加载包含空格" "
。 但是,您可以通过在加载表时指定分隔符来节省时间或减少代码的大小,例如用制表符分隔(或任何其他分隔符而不是默认分隔符或单个空格):
read.table(sep = '\t')
或使用 csv 格式的默认加载参数:
read.csv()
这意味着您可以在原始数据文件中直接保留名称"NEW LEGEND TITLE"
作为列名(标题),以避免在每个图中指定新的图例标题。
将此添加到混合中,以便在更改颜色时使用。 这在具有两个离散变量的 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"
改变传说。 “填充”用于显示不同颜色的标签。 如果您有显示大小的标签,例如 1 点代表 100,其他点代表 200 等,那么您可以像这样使用此代码-
k$labels$size ="Size of points"
它将更改该标签标题。
唯一适合我的解决方案: p + guides(fill=guide_legend("New title")
las,这些解决方案都不适合我。 我正在处理 brms::conditional_effects() 的输出
我的解决方案需要:
+ labs( fill = "New Title", colour = "New Title", labels = "New Title" )
ggplot(df) + labs(legend = '<legend_title>')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.