我需要安排两个分面图,如下:
d = data.frame(Index = LETTERS[1:5],x=1:5,y=1:5)
A = ggplot(subset(d,Index == 'A'),aes(x,y)) +
theme_bw() +
theme(axis.title.x = element_blank()) +
geom_point() + facet_wrap(~Index) + labs(title = "Title, The Title",
subtitle = "Subtitle, The Subtitle",
y = "Side Axes")
B = ggplot(subset(d,Index != 'A'),aes(x,y)) +
theme_bw() +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
geom_point() + facet_wrap(~Index) + labs(title = "", subtitle = "")
g = gridExtra::arrangeGrob(A,B,ncol=2,bottom="Bottom Axes")
grid.arrange(g)
产生以下内容:
从上面可以看出,绘图区域的顶部边缘之间存在轻微的不对齐。这是由“逗号”引起的。在标题和副标题中。
有谁知道如何强制对齐顶边?我需要左侧情节的标题和副标题,右侧有一个(空)标题,副标题。
答案 0 :(得分:4)
@ CephBirk的解决方案是一个聪明而简单的方法。对于像这样的黑客行为不起作用的情况,您可以从图中删除标题和子标题,然后使用grid.arrange
和{为您创建单独的grob,以及图表。 {1}}。在下面的代码中,我还添加了一个arrangeGrob
作为图nullGrob()
和A
之间的间隔符,以便左边的右x标签(B
)图表没有被切断。
1.50
答案 1 :(得分:2)
这有点像hackish,但你可以在左边有相同的标题和副标题,但是用白色字体打印。 :)你说这是由于逗号,所以修复它。
不是最满意的,但它完成了工作。
In [112]: s
Out[112]:
a 0
b 1
c 2
dtype: int64
In [113]: d = s.apply(lambda x: pd.DataFrame([[x,x*2],[x*3,x*4]]).stack()).stack().stack()
In [114]: d
Out[114]:
a 0 0 0
1 0
1 0 0
1 0
b 0 0 1
1 3
1 0 2
1 4
c 0 0 2
1 6
1 0 4
1 8
dtype: int64
答案 2 :(得分:2)