使用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))
我想使用geom_blank
答案 0 :(得分:9)
正如我在评论中所希望的那样,如果情节已经完成,解决方法可以重新排序图层,这对于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
答案 1 :(得分:1)
不幸的是,如果您有多个具有单独数据集的图层,则可以覆盖因子级别。您可以通过在离散比例上设置限制来解决此问题:
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))