繁体   English   中英

Matplotlib pandas dataframe散点类型子图表根据同一列

[英]Matplotlib pandas dataframe scatter type subplots according to the same column

假设我有一个包含100行40列的数据框,其中40列表示散点图的Y轴值。 对于39个散点图,我想绘制第40列,第1列,第40列,第2列,第40列,第3列,依此类推,直到第39列的第40列。产生这种子图的方法,而无需手动进行?

例如(使用较小的数据框),尝试将子列中第1列的函数中的第3列散布,而第2列的函数中的第3列散布。

df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]})
df.plot(x=["AAA", "BBB"], y=["CCC"], kind="scatter", subplots=True, sharey=True)

一种方法是在外部创建子图并在列名上循环,为每个子图创建一个图。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]})

fig, axes = plt.subplots(1,len(df.columns.values)-1, sharey=True)

for i, col in enumerate(df.columns.values[:-1]):
    df.plot(x=[col], y=["CCC"], kind="scatter", ax=axes[i])

plt.show()


在pandas 0.19中可能有效的另一种方法是使用subplots参数。 根据文档

子图:布尔值,默认为False
为每列分别创建子图

我对此进行了解释,以便以下内容可以工作,但是,我无法对其进行测试。

 import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}) df.plot(x=df.columns.values[:-1], y=["CCC" for _ in df.columns.values[:-1]], kind="scatter", subplots=True, sharey=True) plt.show() 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM