将宽图像包裹成几行

时间:2013-01-04 14:11:10

标签: r graphics ggplot2 wrapping

我正在制作一个相当宽的图像,列出目标练习的连续训练课程。

enter image description here

目前,这不是一个非常有用的图形,我需要将图像包装成几行,以使每个训练集的数据更加明显。到目前为止,我一直在通过引入第二个变量来管理它,该变量表示训练集所属的行。缺点是,现在我在每一行上面都有一条带,几乎没有用处。

enter image description here

另一种方法是将每一行生成为单独的数字,并使用gridExtra的{​​{1}}合并它们。

我正在寻找将宽图包装成多行的其他(优雅)方法。如果可能的话,我想在每个方面都没有条带。欢迎所有建议。

这是我用来生成这些图像的代码。

grid.arrange

1 个答案:

答案 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)

enter image description here