Plot Pandas DataFrame as Bar and Line on the same one chart

前端 未结 1 1004
离开以前
离开以前 2020-11-27 17:49

I am trying to plot a chart with the 1st and 2nd columns of data as bars and then a line overlay for the 3rd column of data.

I have tried the following code but this

相关标签:
1条回答
  • 2020-11-27 18:56

    The DataFrame plotting methods return a matplotlib AxesSubplot or list of AxesSubplots. (See the docs for plot, or boxplot, for instance.)

    You can then pass that same Axes to the next plotting method (using ax=ax) to draw on the same axes:

    ax = df_13_14_target[['month','2014_target_val']].plot(x='month',linestyle='-', marker='o')
    df_13_14_target[['month','2013_val','2014_val']].plot(x='month', kind='bar', 
       ax=ax)
    

    import pandas as pd
    import matplotlib.pyplot as plt
    
    left_2013 = pd.DataFrame(
        {'month': ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep',
                   'oct', 'nov', 'dec'],
         '2013_val': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 6]})
    
    right_2014 = pd.DataFrame({'month': ['jan', 'feb'], '2014_val': [4, 5]})
    
    right_2014_target = pd.DataFrame(
        {'month': ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep',
                   'oct', 'nov', 'dec'],
         '2014_target_val': [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]})
    
    df_13_14 = pd.merge(left_2013, right_2014, how='outer')
    df_13_14_target = pd.merge(df_13_14, right_2014_target, how='outer')
    
    ax = df_13_14_target[['month', '2014_target_val']].plot(
        x='month', linestyle='-', marker='o')
    df_13_14_target[['month', '2013_val', '2014_val']].plot(x='month', kind='bar',
                                                            ax=ax)
    
    plt.show()
    

    enter image description here

    0 讨论(0)
提交回复
热议问题