matplotlib:在一个大图中绘制多个小图形

Eda*_*ame 1 matplotlib dataframe python-2.7 pandas

我有一个带有 6 个输入列的 pandas 数据框 pandas_dfcolumn_1, column_2, ... , column_6和一个结果列result。现在我使用以下代码为每两个输入列对绘制散点图(所以我总共有 6*5/2 = 15 个数字)。我做了15次以下代码,每一次都生成了一个大图。

我想知道有没有办法遍历所有可能的列对,并将所有 15 个数字绘制为一个大图中的小数字?谢谢!

%matplotlib notebook
import matplotlib.pyplot as plt
import matplotlib
matplotlib.style.use('ggplot')

pandas_df.plot(x='column_1', y='column_2', kind = 'scatter', c = 'result')
Run Code Online (Sandbox Code Playgroud)

piR*_*red 5

考虑数据框 df

df = pd.DataFrame(np.random.rand(10, 6), columns=pd.Series(list('123456')).radd('C'))
df
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


解决方案
使用itertoolsmatplotlib.pyplot.subplots

from itertools import combinations
import matplotlib.pyplot as plt

pairs = list(combinations(df.columns, 2))

fig, axes = plt.subplots(len(pairs) // 3, 3, figsize=(15, 12))
for i, pair in enumerate(pairs):
    d = df[list(pair)]
    ax = axes[i // 3, i % 3]
    d.plot.scatter(*pair, ax=ax)

fig.tight_layout()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明