pandas 如何将条和线与第二个y轴对齐

eqqqjvef  于 2023-11-15  发布在  其他
关注(0)|答案(1)|浏览(119)

我有一个PandasDF如下:

>>> 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

字符串
然后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)


结果如下:

我的问题是:

  • 如何将线移动到与条形图对齐的同一个x标记?
  • 如何让左、右Y轴代码对齐在同一条线上?
w46czmvw

w46czmvw1#

把最后一行改成:

ax2.plot(ax.get_xticks(),
         df[['sales_gr','net_pft_gr']].values,
         linestyle='-',
         marker='o', linewidth=2.0)

字符串
一切都会好的。


的数据
我不太明白你的第二个问题。第一个和第二个y轴是不同的比例,你把它们对齐到同一条线是什么意思?它们不能对齐到同一条网格线(是的,你可以,但右边的轴看起来很难看,有0.687之类的值)。无论如何,你可以这样做:

ax.set_ylim((-10, 80.))


让他们站在一起,现在的情况看起来很糟糕:


相关问题