如何手动更改 ggplot2 中图例中的关键标签

问题描述 投票:0回答:3

我正在准备要出版的情节。我创建了一个堆积箱形图来显示每组中患有血清阴性病例复杂积累的患者与非血清阴性患者的频率。图例使用数据框中的标签,这些标签适合我们正在从事该项目的人,但不适合发布。我想将这些名称更改为读者更容易理解的名称。

例如运行以下脚本

grp <- gl(n=4,k=20,labels=c("group a","group b","group c", "group d"))
value <- runif(n=80, min=10, max=150)
outcome <- cut(value,2)
data <- data.frame(grp,value,outcome)
ggplot(data, aes(grp, fill=outcome)) + geom_bar() +xlab("group") 
             +ylab("number of subjects") + labs(fill="Serologic response")

该代码创建了不适合发布的关键标签“(10.4,80]”和“(80,150]”。相反,我想要“双负”和“a 和/或 b 为正”。

我想我可以返回数据框并进行转换以获取具有正确标签的新变量。 或者我可以重新标记我的因素?不过,我更愿意在绘图时这样做。

r label key ggplot2
3个回答
45
投票

标准方法是使用缩放功能来更改组的显示标签。您可以将

ggplot
通话替换为

ggplot(data, aes(grp, fill=outcome)) + geom_bar() +xlab("group") +
  ylab("number of subjects") + 
  scale_fill_discrete("Serologic response", 
                      breaks=c("(10.1,79.9]","(79.9,150]"), 
                      labels=c("double negative", "positive for a and/or b"))

请注意,量表的标题已合并到

scale_fill_discrete
调用中。如果您愿意,您也可以使用轴来完成此操作

ggplot(data, aes(grp, fill=outcome)) + geom_bar() +
  scale_x_discrete("group") +
  scale_y_continuous("number of subjects") + 
  scale_fill_discrete("Serologic response", 
                      breaks=c("(10.1,79.9]","(79.9,150]"), 
                      labels=c("double negative", "positive for a and/or b"))

30
投票

我找到了一种混合的方法。它确实重新标记了该因素,但我不必在数据框中执行此操作。相反,我只是在 ggplot 命令中执行此操作。

ggplot(data, aes(grp, fill=factor(outcome,labels=c("low","high")))) + 
  geom_bar() +xlab("group") +ylab("number of subjects") +
   labs(fill="Serologic response")

还有其他方法吗?


0
投票

在ggplot2中,你可以使用

scale_fill_manual()

colors <- c("red","blue")
labels <- c("low","high")

ggplot(data, aes(grp, fill=outcome)) + 
  geom_bar() +
  scale_fill_manual(values = colors,labels = labels) +
  xlab("group") +ylab("number of subjects") + labs(fill="Serologic response")

剧情是怎样的

© www.soinside.com 2019 - 2024. All rights reserved.