【问题标题】:Overlay two Data Frames in one graph [duplicate]在一张图中覆盖两个数据框[重复]
【发布时间】:2018-10-04 00:59:40
【问题描述】:

我有两个不同的数据框,它们的大小相同,并且 Date 列的值相同。

        Date     Open     High      Low    Close        Volume    Market Cap
0 2018-04-16  8337.57  8371.15  7925.73  8058.67  5.631310e+09  1.415710e+11
1 2018-04-15  7999.33  8338.42  7999.33  8329.11  5.244480e+09  1.358120e+11
2 2018-04-14  7874.67  8140.71  7846.00  7986.24  5.191430e+09  1.336820e+11
3 2018-04-13  7901.09  8183.96  7758.93  7895.96  7.764460e+09  1.341140e+11
4 2018-04-12  6955.38  7899.23  6806.51  7889.25  8.906250e+09  1.180480e+11

两个数据帧具有相同的结构。相同的列索引和相同的行数。

print(df.dtypes)
print(df2.dtypes)

两个都给

Date          datetime64[ns]
Open                 float64
High                 float64
Low                  float64
Close                float64  
Volume               float64
Market Cap           float64
dtype: object

我想在 x 轴上绘制日期,在 y 轴上绘制市值。根据我的研究,我认为不可能合并数据框的绘图功能,即。

df.plot(x='Date', y = 'Market Cap', kind = 'line')
df2.plot(x='Date', y = 'Market Cap', kind = 'line')

我的问题是获取我要创建的图表的好方法是什么?我应该使用 groupby、keys 还是 pyplot

要清楚,我想叠加两个单独的图表:

到目前为止,我已经尝试过代码:

import matplotlib.pyplot as plt

# Init subplots
fig, axes = plt.subplots(1,1);

# Init ax with the first plot.
ax = df['Market Cap'].plot()

# Plot second df using ax from the first plot.
_ = df2['Market Cap'].plot(ax = ax)

plt.show()

这会导致不正确的叠加:

【问题讨论】:

  • 您要制作的图表是什么?你能发布一个你希望它看起来如何的例子吗?
  • @DavidG 我编辑了我的原始帖子以包含我想要的示例
  • ax = df.plot(x='Date', y = 'Market Cap', kind = 'line') 然后df2.plot(x='Date', y = 'Market Cap', kind = 'line', ax=ax)
  • @ScottBoston 谢谢这是我希望使用的确切方法,因为它对我来说是最容易阅读的。非常感谢!!

标签: python python-3.x pandas numpy matplotlib


【解决方案1】:
ax = df.plot(x='Date', y = 'Market Cap', kind = 'line')
df2.plot(x='Date', y = 'Market Cap', kind = 'line', ax=ax)

results@scottBoston 提供

【讨论】:

    【解决方案2】:

    尝试使用子图。

    import matplotlib.pyplot as plt
    
    # Init subplots
    fig, axes = plt.subplots(1,1);
    
    # Init ax with the first plot.
    ax = df['Market Cap'].plot()
    
    # Plot second df using ax from the first plot.
    _ = df2['Market Cap'].plot(ax = ax)
    
    plt.show()
    

    【讨论】:

    • 这导致了覆盖但 x 轴是错误的。它似乎是倒退的,并被解释为 int 而不是 datetime
    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2021-01-25
    • 2022-12-09
    • 2018-12-20
    • 2013-04-07
    • 1970-01-01
    • 2015-11-24
    相关资源
    最近更新 更多