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

时间:2016-09-21 15:38:19

标签: python-2.7 pandas matplotlib dataframe

我有一个带有6个输入列的pandas数据帧pandas_df:column_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')

1 个答案:

答案 0 :(得分:4)

考虑数据框df

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

enter image description here

<强> 解决方案
使用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()

enter image description here