R的GridExtra在Python中?

时间:2014-10-03 02:59:49

标签: python matplotlib

R中,我们可以独立绘制每个图形,然后通过像gridExtra这样的包轻松排列所有或部分图形。例如,

p1 <- ggplot(aes(x1,y1), data=df) + geom_point()
p2 <- ggplot(aes(x2,y2), data=df) + geom_point()
p3 <- ggplot(aes(x3,y3), data=df) + geom_point()
p4 <- ggplot(aes(x4,y4), data=df) + geom_point()

我绘制了4个图表,现​​在我只想将其中的2个并排进行分析,所以我可以

grid.arrange(p1, p2, ncol=1)
grid.arrange(p1, p3, ncol=1)
...

我发现这对于我们任意组合和排列独立图表非常方便。但是,我们可以使用Pythonmatplotlib中执行相同的操作吗?这里的一个大问题是,我不知道手头有多少图表,以及我想如何组合和排列它们。

1 个答案:

答案 0 :(得分:0)

也许gridspec会对你有用吗?我用它来显示/生成不同的报告和摘要

http://matplotlib.org/users/gridspec.html

如果没有,可能是一个简单的任意比较包装器?

import matplotlib.pyplot as plt

def compare(data, fig, rows, cols ):
    for i in range (0,len(data)):
        plt.figure(fig)
        plt.subplot(rows, cols, i+1)
        plt.plot(data[i])
    return

d1 = [1, 2, 3, 4]
d2 = [4, 3, 2, 1]
d3 = [4, 3, 3, 1]
d4 = [3, 4, 1, 2]
data = [d2,d1,d4]

# compare 4 horizontally
compare([d1, d2, d3, d4], fig=1, rows=1, cols=4)
# compare 4 vertically
compare([d1, d2, d3, d4], fig=2, rows=4, cols=1)
# compare 2 vertically
compare([d2, d3], fig=3, rows=2, cols=1)
# compare 3 horizontally
compare([d1, d2, d4], fig=4, rows=1, cols=3)
# compare 3 vertically
compare(data, fig=5, rows=3, cols=1)
plt.tight_layout()
plt.show()