我想完全删除构面的标签,以创建一种迷你图效果,对于观众来说,标签无关紧要,我能想到的最好的办法是:
library(MASS)
library(ggplot2)
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') +
facet_wrap(~ID) +
theme(strip.text.x = element_text(size=0))
那么我可以完全摆脱(现在是空白的)strip.background,为“迷你图”留出更多空间吗?
或者是否有更好的方法来为像这样的大量二进制值时间序列获得这种“迷你图”效果?
最佳答案
对于 ggplot v2.1.0 或更高版本,使用 element_blank()
删除不需要的元素:
library(MASS) # To get the data
library(ggplot2)
qplot(
week,
y,
data = bacteria,
group = ID,
geom = c('point', 'line'),
xlab = '',
ylab = ''
) +
facet_wrap(~ ID) +
theme(
strip.background = element_blank(),
strip.text.x = element_blank()
)
在本例中,您尝试删除的元素称为 strip
。
使用 ggplot grob 布局的替代方案
在旧版本的ggplot
(v2.1.0之前)中, strip 文本占据gtable布局中的行。
element_blank
删除文本和背景,但不会删除该行占用的空间。
此代码从布局中删除这些行:
library(ggplot2)
library(grid)
p <- qplot(
week,
y,
data = bacteria,
group = ID,
geom = c('point', 'line'),
xlab = '',
ylab = ''
) +
facet_wrap(~ ID)
# Get the ggplot grob
gt <- ggplotGrob(p)
# Locate the tops of the plot panels
panels <- grep("panel", gt$layout$name)
top <- unique(gt$layout$t[panels])
# Remove the rows immediately above the plot panel
gt = gt[-(top-1), ]
# Draw it
grid.newpage()
grid.draw(gt)
关于完全删除facet_wrap标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10547487/