【问题标题】:Multiple plots on subplots in pandas熊猫子图上的多个图
【发布时间】:2019-08-03 14:24:19
【问题描述】:

假设我有一个如下所示的数据框(按日期编制索引):

Value1 Value2 Value3 Value4 Value5
1      1      3      4      -1    
2      2      3      4      1
3      3      3      2      -1

值并不重要,但我想举个例子。

我有一个看似相当基本的问题。我正在尝试绘制一个类似于here 的 MACD 图表。我想要一个具有股票价格的图,其下方有一个带有 MACD 线的图。我有子图工作,但我不知道如何在同一个图表上获得折线图和条形图。我尝试了以下方法:

fig, axes = plt.subplots(nrows=2, ncols=1, sharex=True, squeeze=False)
ind3.iloc[:,0].plot(title="Stock Price", ax=axes[0,0], fontsize=12, color=colors)
ind3.iloc[:,1:-1].plot(title="MACD", ax=axes[1,0], fontsize=12, color=colors)
ind3.iloc[:,-1].plot(title="MACD", ax=axes[1,0], kind='bar',fontsize=12, color=colors)

这会导致如下所示的乱码:

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: pandas python-2.7 matplotlib


    【解决方案1】:

    这可能与您使用 iloc 进行索引的方式有关,但如果不查看其余代码就很难判断。

    子图中的多个图只需要您在特定子图中调用plot/bar,并将您要绘制的数据传递给它。一般来说,结构看起来像这样......

    生成一些测试数据:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    df = pd.DataFrame(np.random.randint(0,100,size=(10,2)), columns=list('AB'))
    df['time'] = pd.date_range('2019-03-01', periods=10, freq='1D')
    df = df.set_index('time')
    print(df)
    
                 A   B
    time              
    2019-03-01  12  73
    2019-03-02  46  12
    2019-03-03  41  10
    2019-03-04  18  89
    2019-03-05  60  98
    2019-03-06  57  23
    2019-03-07  59  73
    2019-03-08  76  41
    2019-03-09  71  34
    2019-03-10  38  16
    

    创建情节:

    fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(8,10))
    ax[0].set_title('Stock Price')
    ax[1].set_title('MACD')
    
    ax[1].plot(df.index, df['A'], color='b', label='Signal')
    ax[1].bar(df.index, df['B'], color='g', label='MACD')
    
    ax[1].set_xticklabels(df.index, rotation=90)
    
    plt.legend(loc=1)
    plt.tight_layout()
    plt.show()
    

    【讨论】:

    • 啊,我没有意识到您可以在轴对象上调用 plt() 和 bar()。感谢您的帮助...我会试一试。
    猜你喜欢
    • 2021-08-14
    • 2020-02-11
    • 1970-01-01
    • 2017-10-29
    • 2012-08-21
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多