我有如下的情节如下。它是用下面的命令创建的:
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")
但这并不奏效。正确的做法是什么?
因为你有两个密度,我想你可能想用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"))
还有一个非常简单的答案,可以用于一些简单的图表。
只需在图中添加一个guide_legend()调用。
ggplot(...) + ... + guide_legend(title="my awesome title")
如ggplot文档中所示。
如果这不起作用,你可以通过调用guides来更精确地设置你的guide参数:
ggplot(...) + ... + guides(fill=guide_legend("my awesome 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中的示例进行修改。
我要告诉你的方法,将允许你用一个公式来改变图例,轴,标题等的标签,你不需要使用记忆多个公式。这不会影响字体风格或标签/标题和轴的文本设计。
下面是我对这个问题的完整回答。
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"
它会改变标签标题。