使用geom_blank,我想添加一些新的因素级别,但我似乎无法做到这一点,并保持NA级别
library('ggplot2')
pl <- ggplot(data.frame(x = factor(c(1:2, NA)), y = 1), aes(x, y)) + geom_point()
pl

pl + geom_blank(data = data.frame(x = addNA(factor(c(0:3, NA))), y = 1))

我想让x在0,1,2,3,NA上使用geom_blank
发布于 2016-09-24 22:57:10
正如我在评论中所希望的那样,如果已经制作了图层,就可以重新排列图层,这应该适用于一般的ggplots。
library('ggplot2')
pl <- ggplot(data.frame(x = factor(c(1:2, NA)), y = 1), aes(x, y)) +
geom_point() +
geom_blank(data = data.frame(x = addNA(factor(c(0:3, NA))), y = 1))
## not what I want
pl
## this is what I want
pl$layers <- rev(pl$layers)
pl

发布于 2016-09-25 06:21:34
不幸的是,当您有多个具有独立数据集的层时,元素级别可能会被覆盖。您可以通过设置离散比例的限制来解决这个问题:
pl <- ggplot(data.frame(x = factor(c(1:2, NA)), y = 1), aes(x, y)) + geom_point()
pl +
geom_blank(data = data.frame(x = addNA(factor(c(0:3, NA))), y = 1)) +
scale_x_discrete(limits=addNA(factor(c(0:3, NA))))由于某种原因,这扰乱了轴上的膨胀,NA断裂在右边边缘。
[

这可以通过手动设置扩展参数来解决。
pl <- ggplot(data.frame(x = factor(c(1:2, NA)), y = 1), aes(x, y)) + geom_point()
pl +
geom_blank(data = data.frame(x = addNA(factor(c(0:3, NA))), y = 1)) +
scale_x_discrete(limits=addNA(factor(c(0:3, NA))), expand=c(0.25,0.25))

https://stackoverflow.com/questions/39648451
复制相似问题