ggplot2:如何仅在一个方面删除一个级别?
ggplot2: How to remove one level in one facet only?
这是一个可重现的例子
set.seed(12)
d = data.frame(
x = rep(LETTERS[c(2,1,3,4)],each=30),
y=rnorm(120),
facet = c(rep("facet 1", 20), rep("facet 3", 10), rep(rep(paste("facet",1:3), each=10),3))
)
require(ggplot2)
ggplot(d,aes(x=x,y=y)) + geom_boxplot() + facet_grid(.~facet)
如您所见,facet 2
中没有 x == "B"
的条目。
如何删除空 space 并勾选 B
仅用于 facet 2
?
facet 2
的水平宽度将是其他面的水平宽度的 3/4。
您必须同时设置 scales = "free_x"
和 space = "free_x"
:
require(ggplot2)
ggplot(d,aes(x=x,y=y)) + geom_boxplot() +
facet_grid(.~facet, scales = "free_x", space = "free_x")
scales = "free_x"
允许 x 轴在小平面之间不同。因此,在第二个方面,缺失的级别将被省略。
space = "free_x"
允许小平面的不同空间宽度。根据文档:
if "free_x" their width will be proportional to the length of the x scale;
其中 "their width" 指刻面的宽度。
这是一个可重现的例子
set.seed(12)
d = data.frame(
x = rep(LETTERS[c(2,1,3,4)],each=30),
y=rnorm(120),
facet = c(rep("facet 1", 20), rep("facet 3", 10), rep(rep(paste("facet",1:3), each=10),3))
)
require(ggplot2)
ggplot(d,aes(x=x,y=y)) + geom_boxplot() + facet_grid(.~facet)
如您所见,facet 2
中没有 x == "B"
的条目。
如何删除空 space 并勾选 B
仅用于 facet 2
?
facet 2
的水平宽度将是其他面的水平宽度的 3/4。
您必须同时设置 scales = "free_x"
和 space = "free_x"
:
require(ggplot2)
ggplot(d,aes(x=x,y=y)) + geom_boxplot() +
facet_grid(.~facet, scales = "free_x", space = "free_x")
scales = "free_x"
允许 x 轴在小平面之间不同。因此,在第二个方面,缺失的级别将被省略。
space = "free_x"
允许小平面的不同空间宽度。根据文档:
if "free_x" their width will be proportional to the length of the x scale;
其中 "their width" 指刻面的宽度。