2014-10-03 6 views
0

В R мы могли бы построить каждый график самостоятельно, а затем организовать все или некоторые графики легко с помощью пакетов, таких как gridExtra. Например,R's gridExtra в Python?

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() 

I участок 4 графы, а теперь я просто хочу поставить 2 из них бок о бок, чтобы сделать некоторый анализ, так что я мог

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

Я считаю, что это очень удобно для нас произвольно объединять и упорядочивать независимые графики. Однако можем ли мы сделать то же самое в Python с matplotlib? Большая проблема здесь в том, что я не знаю, сколько графиков есть перед вами и как я хочу их комбинировать и упорядочить.

+0

См http://matplotlib.org/faq/usage_faq.html#coding-styles – tacaswell

+0

и http://stackoverflow.com/questions/18284296/matplotlib-using-a-figure-object-to- initialize-a-plot/18302072 # 18302072 – tacaswell

+0

и http://stackoverflow.com/questions/22606665/how-to-plot-2-subplots-from-different-functions-in-the-same-windowfigure/22612754#22612754 – tacaswell

ответ

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() 
+0

. Ответы только для ссылок лучше всего подходят для комментариев. – Werner

+0

Ну, мне кажется, мне нужно сначала указать макет, а затем построить графики, верно? Если это так, я не хочу этого. – Alcott

Смежные вопросы