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)
考虑数据框 df
df = pd.DataFrame(np.random.rand(10, 6), columns=pd.Series(list('123456')).radd('C'))
df
Run Code Online (Sandbox Code Playgroud)
解决方案
使用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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1221 次 |
最近记录: |