我试图在x轴上绘制一个离散变量,而在y轴上绘制一个连续变量。想象一下在mtcars中我试图绘制cyl与disp的关系。如果disp的某些值是NA,该怎么办?我想知道cyl的每个值有多少NA,并在一个简单的表格中显示,可能在图例下方(或在图例本身内)。有一种简单(或复杂)的方法吗?
我提出的类似相关问题:R - looking at means by subgroup and overall on a line graph
谢谢!
答案 0 :(得分:0)
这个答案并不能满足所有问题的要求,但由于有关数据应该如何准确呈现的细节有点模糊,我还是会发帖。
所以这是一种向传奇本身添加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)