有多个选项。
使用 facets
,您可以使用 facet_grid(..., space='free_y')
来调整每行的高度以适应 y 轴的长度。但是在您的数据集中,底部行被最小化为单行 (0-25 vs. 200,000 - 320,000)。
当绘制/打印 ggplot2 对象时,它们首先被转换为 gtable
对象。将您的绘图保存为 p
,我们可以调用 ggplotGrob
来获取 gtable 对象。这是一个单向过程;一旦转换,就无法将 gtable 转回 ggplot2 对象!
(g <- ggplotGrob(p))
TableGrob (12 x 8) "layout": 18 grobs
z cells name grob
1 0 ( 1-12, 1- 8) background rect[plot.background..rect.3766]
2 1 ( 6- 6, 4- 4) panel-1-1 gTree[panel-1.gTree.3696]
3 1 ( 8- 8, 4- 4) panel-1-2 gTree[panel-2.gTree.3711]
4 3 ( 5- 5, 4- 4) axis-t-1 zeroGrob[NULL]
5 3 ( 9- 9, 4- 4) axis-b-1 absoluteGrob[GRID.absoluteGrob.3725]
6 3 ( 6- 6, 3- 3) axis-l-1 absoluteGrob[GRID.absoluteGrob.3733]
7 3 ( 8- 8, 3- 3) axis-l-2 absoluteGrob[GRID.absoluteGrob.3741]
8 3 ( 6- 6, 6- 6) axis-r-1 zeroGrob[NULL]
9 3 ( 8- 8, 6- 6) axis-r-2 zeroGrob[NULL]
10 2 ( 6- 6, 5- 5) strip-r-1 gtable[strip]
11 2 ( 8- 8, 5- 5) strip-r-2 gtable[strip]
12 4 ( 4- 4, 4- 4) xlab-t zeroGrob[NULL]
13 5 (10-10, 4- 4) xlab-b titleGrob[axis.title.x..titleGrob.3714]
14 6 ( 6- 8, 2- 2) ylab-l titleGrob[axis.title.y..titleGrob.3717]
15 7 ( 6- 8, 7- 7) ylab-r zeroGrob[NULL]
16 8 ( 3- 3, 4- 4) subtitle zeroGrob[plot.subtitle..zeroGrob.3763]
17 9 ( 2- 2, 4- 4) title zeroGrob[plot.title..zeroGrob.3762]
18 10 (11-11, 4- 4) caption zeroGrob[plot.caption..zeroGrob.3764]
所有元素都以网格状布局设置。布局中每一行的高度由g$heights
给出:
> g$heights
[1] 5pt 0cm 0cm 0cm 0cm 1null 5pt 1null 0.396281911581569cm 1grobheight
[11] 0cm 5pt
将“panel-1-1”和“panel-1-2”的坐标与这些高度匹配,您会发现第6个和第8个元素都是
1null
。您可以将它们更改为任何单位,如厘米(cm),英寸(in),点(pt)等。
1null
是其他元素剩余的部分,然后在它们之间划分。因此,我们可以将第6个高度更改为
2null
(请注意使用双括号)。
> g$heights[[6]] <- unit(2, 'null')
> grid.draw(g)
![enter image description here](https://istack.dev59.com/eQkeo.webp)