繁体   English   中英

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

[英]How do I manually change the key labels in a legend in ggplot2

我正在准备出版的情节。 我创建了一个堆叠的箱形图,以显示每组中血清阴性药相对于非血清阴性药的复杂积累。 图例使用的是数据框中的标签,这些标签适用于我们在项目上工作但不适合发布的标签。 我想将名称更改为读者可以更快理解的名称。

因此,例如运行以下脚本

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]”,取而代之的是我希望“ double negative”和“ positive a and / or b”。

我想我可以回到数据框并进行转换,以获得带有正确标签的新变量。 或者我可以重新标记我的因素 但是,我宁愿在绘图时进行。

标准方法是使用缩放功能更改组的显示标签。 您可以将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"))

我发现了一种混合方式。 它的确重新标记了因子,但我不必在数据框中这样做。 相反,我只是在ggplot命令中执行此操作。

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

还有其他方法吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM