Python:使用辅助y轴时共享x轴

时间:2019-12-03 14:23:58

标签: python pandas matplotlib charts

在创建基于第二个y轴(基于熊猫数据框)的图表时,我正在努力共享x轴。我主要是从解决方案here中借钱的,在这里我喜欢编辑已接受的答案。

使用我自己的玩具数据框重新创建此解决方案时,我面临着我的x轴看起来不太好的问题。

df = pd.DataFrame(np.random.randint(0, 100, (20, 2)),
                  index=pd.date_range('20190101', periods=20),
                  columns=list('AB'))

fig, ax = plt.subplots()

ax.plot(df.index, df['A'], 'blue', label='Line A')

ax2 = ax.twinx()
ax2.plot(df.index, df['B'], 'red', label='Line B')

lines = ax.get_lines() + ax2.get_lines()

ax.legend(lines, [l.get_label() for l in lines],
          loc='upper left', frameon=False, fontsize=20)

enter image description here

2 个答案:

答案 0 :(得分:2)

一种解决方法是旋转x-tick标签:

df = pd.DataFrame(np.random.randint(0, 100, (20, 2)),
                  index=pd.date_range('20190101', periods=20),
                  columns=list('AB'))

fig, ax = plt.subplots()
plt.xticks(rotation=70)

ax.plot(df.index, df['A'], 'blue', label='Line A')

ax2 = ax.twinx()
ax2.plot(df.index, df['B'], 'red', label='Line B')

lines = ax.get_lines() + ax2.get_lines()



ax.legend(lines, [l.get_label() for l in lines],
          loc='upper left', frameon=False, fontsize=20)

输出:

enter image description here

另一种选择是增加图形大小或减小标签字体大小,以使标签不再重叠。

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

输出:

enter image description here

答案 1 :(得分:0)

您可以使用pandas的内置命令,该命令提供了一些有趣的刻度标签:

fig, ax = plt.subplots()
df.plot(y=['A','B'], secondary_y='B', ax=ax)

输出:

enter image description here