【问题标题】:Plot Multiple DataFrames into one single plot将多个 DataFrame 绘制到一个图中
【发布时间】:2018-06-18 19:54:40
【问题描述】:

我有两个数据框,我想将它们绘制成一个图表。这是一个基本代码:

#!/usr/bin/python

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

scenarios = ['scen-1', 'scen-2']

for index, item in enumerate(scenarios):
    df = pd.DataFrame({'A' : np.random.randn(4)})
    print df

df.plot()
plt.ylabel('y-label')
plt.xlabel('x-label')
plt.title('Title')
plt.show()

但是,这只会绘制最后一个数据帧。如果我使用pd.concat(),它会用组合值绘制一条线。 如何绘制两条线,一条用于第一个数据帧,一条用于第二个?

【问题讨论】:

  • 您能否提供一张图片,说明您在一张图中的两个图的含义?我的理解是,您想要在一个图中绘制两个或多个图,对吗?但我也看到了你对其中一个答案的评论,你希望两个情节都像一个情节一样,我似乎不明白你想要什么。你想要一个图表,一个“x 值”有多个“y 值”吗?就像烛台图一样?
  • 有一个问题我已经回答了一个图中的多个情节,看看:stackoverflow.com/questions/48125674/…

标签: python pandas matplotlib


【解决方案1】:

你需要把你的情节放在 for 循环中。

如果您希望它们在单个图上,则需要使用 plot 的 ax kwarg 将它们绘制在同一轴上。在这里,我使用subplots 创建了一个新轴,但这可能是一个已经填充的轴,

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

scenarios = ['scen-1', 'scen-2']

fig, ax = plt.subplots()

for index, item in enumerate(scenarios):
    df = pd.DataFrame({'A' : np.random.randn(4)})
    print df
    df.plot(ax=ax)

plt.ylabel('y-label')
plt.xlabel('x-label')
plt.title('Title')
plt.show()

【讨论】:

  • 谢谢乔希。但是将df.plot() 放在循环中会产生两个图。我希望两者都在同一个情节上。
  • @AdhySatya 编辑包含这个 - 我现在在你的问题中看到它:)
  • @josh 成功了,谢谢。我做了一个小修复,应该是subplots()
【解决方案2】:

plot 函数只被调用一次,正如你所说,这是最后一个值df。将df.plot() 放入循环中。

【讨论】:

    猜你喜欢
    • 2016-11-06
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 2018-07-21
    相关资源
    最近更新 更多