使用pandas在线条/条形图上绘制多个系列

时间:2016-03-15 22:09:19

标签: python pandas matplotlib

我试图在同一个图表上绘制线条和条形图。我很接近,但我无法解决一些问题。这就是我到目前为止所拥有的......

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.DataFrame({'Value1': np.arange(80, 180, 1),
                     'Value2': np.arange(1.5, .5, -0.01)},
                    index=np.arange(10, 110, 1))

fig, ax = plt.subplots(figsize=(10, 10))

data['Value1'].plot(ax=ax)
ax2 = ax.twinx()
data['Value2'].plot(kind='bar', ax=ax2, color='y', ylim=(0, 3))

ExampleGraph

所以我对这张图的问题是......

  1. x-ticks看起来很糟糕。如果我只做一个折线图,那么x-ticks看起来很好。然而,只要我添加twinx轴,主要/次要滴答逻辑就会被删除。我该怎么做?
  2. 我的x轴是数字。注意,该线截取值为" 10"的x轴。 (很难看到,但那是怎么回事)。我认为这是因为线的x轴应该从" 10"开始。并且条形的x轴也从10开始,但是值和标签的混淆使得线的x轴被推到标签上#34 ; 20&#34 ;.
  3. 最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

条形图和线条图有不同的X坐标范围不同,请考虑使用两个x坐标。

答案 1 :(得分:0)

您可以尝试在xticks之后保存xtickslabelsdata['Value1'].plot(ax=ax)并在data['Value2'].plot(kind='bar', ax=ax2, color='y', ylim=(0, 3))之后将其设置回来:

data['Value1'].plot(ax=ax)
xticks = ax.get_xticks()
xlabels = [x.get_text() for x in ax.get_xticklabels()]


ax2 = ax.twinx()
data['Value2'].plot(kind='bar', ax=ax2, color='y', ylim=(0, 3))

ax.set_xticks(xticks)
ax.set_xticklabels(xlabels)

plt.show()