我正在制作一个相当宽的图像,列出目标练习的连续训练课程。
目前,这不是一个非常有用的图形,我需要将图像包装成几行,以使每个训练集的数据更加明显。到目前为止,我一直在通过引入第二个变量来管理它,该变量表示训练集所属的行。缺点是,现在我在每一行上面都有一条带,几乎没有用处。
另一种方法是将每一行生成为单独的数字,并使用gridExtra
的{{1}}合并它们。
我正在寻找将宽图包装成多行的其他(优雅)方法。如果可能的话,我想在每个方面都没有条带。欢迎所有建议。
这是我用来生成这些图像的代码。
grid.arrange
答案 0 :(得分:4)
要删除小图上方的条带文本,您可以为这些元素设置elemnt_blank()
。
# wrapped figure
ggplot(rsltm, aes(x = trening, y = rezultat, fill = trening)) +
geom_dotplot(binaxis = "y", stackdir = "center", show_guide = FALSE) +
scale_fill_manual(values = rep("red", st)) +
facet_wrap(~vrsta, nrow = st.vrst, scales = "free_x") +
theme_bw() + theme(strip.text=element_blank(),
strip.background=element_blank())
改善情节的一种方法是在情节区域内放置trening
标签。
为此目的,制作了新的数据框df.names
。行数对应于trening
的级别。
df.names<-data.frame(lab.nam=unique(rsltm$trening), #labels
x=rep(1:5, times = 5, length.out = 23), #x coordinate (1:5)
y=rep(11,23), #y coordinate (11)
vrsta=rep(vrsta, each = 5, length.out = 23)) #vrsta values to ensure position in facets
生成没有x轴标签的绘图的代码。 panel.margin=
确保方面之间的空间更小。
p <- ggplot(rsltm, aes(x = trening, y = rezultat)) +
geom_dotplot(binaxis = "y", stackdir = "center", show_guide = FALSE) +
scale_fill_manual(values = rep("red", st)) +
facet_wrap(~vrsta, nrow = st.vrst, scales = "free_x") +
theme_bw() + theme(strip.text=element_blank(),
strip.background=element_blank(),
panel.margin = unit(-0.6, "lines"),
panel.grid.minor=element_blank()) +
scale_y_continuous(limits=c(7.5,11.5),breaks=c(8,9,10)) +
scale_x_discrete(breaks=NULL)
geom_text()
个地方标签位于点上方。
p + geom_text(data=df.names,aes(x, y, label=lab.nam),size=4)