2012-06-05 16 views
6

我有问题,matplotlib子图使我困惑。我不知道我想预先绘制的小区的数量,但是我知道我希望它们分成两排。所以我不能使用用matplotlib进行多点绘图而不知道运行前的图的数量

plt.subplot(212) 

因为我不知道我应该提供的号码。

它应该是这样的:

example for plot

现在我绘制所有的情节放到一个文件夹,并把它们与插画在一起,但必须有与matplotlib一个更好的办法。如果我不清楚什么地方,我可以提供我的代码。

+0

一个DIY的方法是使用'axes.set_position()'http://stackoverflow.com/questions/10881520/alignment-of-stacked-subplots/10881881#10881881 –

+1

你的意思是你直到运行时才知道地块的数量,或者直到你已经开始处理一些地块?如果是前者,则可以使用显式语法:'plt.subplot(2,n_rows,2)'其中n_rows是您的图/ 2的数量。 – pelson

+0

您可以将此作为答案吗?我会接受它。 – tarrasch

回答

7

我的理解是,你只知道在运行时曲线的数量,因此与语法速记挣扎,如:

plt.subplot(121) 

值得庆幸的是,为了节省你做一些尴尬的数学弄清楚这个数字编程,还有另外一个接口,它允许您使用以下形式:

plt.subplot(n_cols, n_rows, plot_num) 

所以你的情况,考虑你想要n图,你可以这样做:

n_plots = 5 # (or however many you programatically figure out you need) 
n_cols = 2 
n_rows = (n_plots + 1) // n_cols 
for plot_num in range(n_plots): 
    ax = plt.subplot(n_cols, n_rows, plot_num) 
    # ... do some plotting 

另外,还有一个稍微更Python接口,你可能希望知道:

fig, subplots = plt.subplots(n_cols, n_rows) 
for ax in subplots: 
    # ... do some plotting 

(注意,这是不subplots()平原subplot())。虽然我必须承认,但我从未使用过后一种界面。

HTH

相关问题