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

我正在准备出版的阴谋。 我创build了一个堆积箱图,显示每组患者的血清阴性与非阴性的复杂积累的频率。 图例是使用数据框中的标签,这些标签适合于我们正在从事项目工作但不出版的人员。 我想把名字改为读者更快理解的东西。

所以例如运行下面的脚本

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

该代码创build了不适合发布的关键标签“(10.4,80]”和“(80,150)”,相反,我想要“双重否定”和“对a和/或b正面”。

我想我可以回到数据框,并转换成正确的标签的新variables。 或者我可以重新标记我的因素 ? 不过,我宁愿在绘图的时候这样做。

标准的方法是使用比例函数来更改组显示的标签。 你可以用你的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") 

还有其他的方法吗?