为什么ax在for循环中计算,当ax独立于迭代时绘制matplotlib中的子图

时间:2017-03-08 13:58:45

标签: python matplotlib plot

我认为下面给出的两个片段应该会导致相同的行为,因为我们没有使用' i'计算无花果和斧头的价值,但我得到了两个不同的图表,用于下面的代码。

对于第一个代码,我得到了7 * 2网格中的子图,而对于第二个代码,我得到了1 * 2网格,其中有重叠的数字。

for i in range(n_rows):
    fg,ax = plt.subplots(nrows=1,ncols=n_cols,figsize=(12, 8))
    for j in range(n_cols):
        sns.violinplot(y=cols[i*n_cols+j], data=dataset, ax=ax[j])

fg,ax = plt.subplots(nrows=1,ncols=n_cols,figsize=(12, 8))
for i in range(n_rows):
    for j in range(n_cols):
        sns.violinplot(y=cols[i*n_cols+j], data=dataset, ax=ax[j])

1 个答案:

答案 0 :(得分:2)

当你将fg,ax = plt.subplots(nrows=1,ncols=n_cols,figsize=(12, 8))置于循环中时,它将在每次迭代中执行,从而产生7个不同的子图。

根据您的逻辑,以下程序只会打印“Hello world!”一次(因为i的值未在print-statement中使用),实际上它会打印10次。

for i in range(10):
    print("Hello world!")