繁体   English   中英

R ggplot stat_summary:如何在图例中包括NA数量?

[英]R ggplot stat_summary: how to include a count of NAs in legend?

我试图在x轴上绘制一个离散变量,而在y上绘制一个连续变量。 想象一下在mtcars中我试图绘制cyl vs. disp。 如果disp的某些值是NA怎么办? 我想知道cyl的每个值有多少个NA,并将其显示在一个简单的表中,可能在图例的正下方(或图例本身内)。 有没有简单(或复杂)的方法来做到这一点?

我提出的类似且相关的问题: R-在折线图上按子组和整体查看均值

谢谢!

这个答案并不能满足所有问题的要求,但是由于有关如何准确显示数据的细节有些含糊,所以我还是在发布。

因此,这是一种将NA计数添加到图例本身的方法:

library(datasets)
mycars <- mtcars
mycars$disp[c(1,2,3)] <- NA

lvls = levels(as.factor(mycars$cyl))
nacounts <- by(mycars, mycars$cyl, function(x) sum(is.na(x$disp)))
labels = paste(lvls," (NA=",as.integer(nacounts),")",sep="")

ggplot(data=mycars) +
   geom_boxplot(aes(x=cyl,y=disp, fill=as.factor(cyl)))  +
   scale_fill_discrete(name="Cyl", labels=labels)

结果

编辑

关于问题中提到的stat_summary图:可以使用scale_linetype_ *函数添加描述线型的标签。

如果您希望使用与上图相同的图例,我认为您必须添加描述cyl的图形元素,例如:

ggplot(mycars,aes(cyl,disp)) +
  stat_summary(fun.y=mean, geom="line", lwd=1.5) +
  stat_summary(aes(lty=factor(vs)),fun.y="mean",geom="line") +
  stat_summary(aes(color=factor(cyl)),fun.y="mean",geom="point",size=5) +
  scale_x_continuous(breaks=c(4,6,8),labels=c("four","6","8")) +
  scale_color_discrete(labels=labels)

点几何叠加的绘图

暂无
暂无

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

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