相关疑难解决方法(0)

如何在matplotlib两个y轴图表中对齐条形和线条?

我有一个熊猫df如下:

>>> df
                   sales  net_pft  sales_gr  net_pft_gr
STK_ID RPT_Date                                        
600809 20120331  22.1401   4.9253    0.1824     -0.0268
       20120630  38.1565   7.8684    0.3181      0.1947
       20120930  52.5098  12.4338    0.4735      0.7573
       20121231  64.7876  13.2731    0.4435      0.7005
       20130331  27.9517   7.5182    0.2625      0.5264
       20130630  40.6460   9.8572    0.0652      0.2528
       20130930  53.0501  11.8605    0.0103     -0.0461
Run Code Online (Sandbox Code Playgroud)

然后df[['sales','net_pft']].unstack('STK_ID').plot(kind='bar', use_index=True)创建条形图.

df[['sales_gr','net_pft_gr']].plot(kind='line', use_index=True)创建折线图:

现在我想使用twinx()将它们放在两个y轴的图表中.

import matplotlib.pyplot as plt
fig = plt.figure()
ax = df[['sales','net_pft']].unstack('STK_ID').plot(kind='bar', use_index=True)
ax2 = ax.twinx()
ax2.plot(df[['sales_gr','net_pft_gr']].values, linestyle='-', marker='o', linewidth=2.0)
Run Code Online (Sandbox Code Playgroud)

结果是这样的: 在此输入图像描述

我的问题是:

  • 如何在相同的x-tickers上移动线条与杆对齐?
  • 如何让左右y_axis代码在同一行对齐?

python matplotlib pandas

15
推荐指数
1
解决办法
1万
查看次数

将Pandas DataFrame绘制为同一图表上的Bar和Line

我试图绘制一个图表,其中第一列和第二列数据为条形,然后是第三列数据的行覆盖.

我尝试了以下代码,但这创建了2个单独的图表,但我希望这一切都在一个图表上.

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')
df_13_14_target[['month','2013_val','2014_val','2014_target_val']].head(12)

plt.figure()
df_13_14_target[['month','2014_target_val']].plot(x='month',linestyle='-', marker='o') …
Run Code Online (Sandbox Code Playgroud)

python charts matplotlib pandas

13
推荐指数
1
解决办法
3万
查看次数

标签 统计

matplotlib ×2

pandas ×2

python ×2

charts ×1