【问题标题】:Plot two pandas dataframes in one scatter plot在一个散点图中绘制两个 pandas 数据框
【发布时间】:2019-01-24 10:18:03
【问题描述】:

我有两个具有相同索引和列的数据框,例如:

import pandas as pd
dfGDPgrowth = pd.DataFrame({'France':[2%, 1.8%, 3%], 'Germany':[3%, 2%, 2.5%]}, index = [2007, 2006, 2005])
dfpopulation = pd.DataFrame({'France':[100, 105, 112], 'Germany':[70, 73, 77]}, index = [2007, 2006, 2005])

是否有一种简单的 matplotlib 方法可以创建具有 x 轴百分比增长和 y 轴人口的散点图?

编辑:我的数据框有 64 列,所以我想知道它是否可以通过一些循环来完成,所以我不必手动输入它们。

【问题讨论】:

  • 我是论坛的新手,只是在没有评论解释问题的情况下投票否决了我的主题并不能帮助我改善我的问题。我的问题是不清楚还是太难了?
  • @flT 我没有投反对票,但展示您解决此问题的尝试以及遇到的任何错误/问题通常是个好主意
  • @DavidG Point 指出。下次将提供我的nooby解决方案:)希望其他反对票是针对同一件事的,否则这个系统会让新用户难以理解他们的错误......无论如何,感谢Bazingaa,解决方案就像魅力一样!非常感谢!

标签: python pandas dataframe matplotlib


【解决方案1】:

您是否正在寻找类似的东西

import pandas as pd
import matplotlib.pyplot as plt

dfGDPgrowth = pd.DataFrame({'France':[2, 1.8, 3], 'Germany':[3, 2, 2.5]}, index = [2007, 2006, 2005])
dfpopulation = pd.DataFrame({'France':[100, 105, 112], 'Germany':[70, 73, 77]}, index = [2007, 2006, 2005])

for col in dfGDPgrowth.columns:
    plt.scatter(dfGDPgrowth[col], dfpopulation[col], label=col)
plt.legend(loc='best', fontsize=16)
plt.xlabel('Growth %')
plt.ylabel('Population')

【讨论】:

  • 正是这个输出。谢谢!但是我的数据框有 64 列。我正在寻找一种无需手动输入每一列的自动方式来获取此图。猜想用一些循环不会太难,但我猜不出合成器..
  • @flT:使用 for 循环检查我编辑的答案。如果需要,您可以通过注释掉 plt.legend 行来关闭图例
猜你喜欢
  • 2021-05-16
  • 2017-08-21
  • 2019-01-14
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
相关资源
最近更新 更多