我有一个带有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')
答案 0 :(得分:4)
考虑数据框df
df = pd.DataFrame(np.random.rand(10, 6), columns=pd.Series(list('123456')).radd('C'))
df
<强> 解决方案 强>
使用itertools
和matplotlib.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()