当子图和次要y时,pandas plot隐藏x轴

时间:2016-06-05 07:12:22

标签: python pandas matplotlib plot

我对熊猫有疑问,无法弄清楚原因。我想用两个子图创建一个图,并绘制所有子图x轴标签。这是数据:

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

df = pd.DataFrame({'value A': np.random.random(10), 'value B': np.random.random(10)*np.random.random_sample()*10.,
    'value C': np.concatenate((np.tile(1, 5),np.tile(2,5)))}, index=pd.date_range('2015-03-02', periods=10, freq='D'))
print(df)

这是绘图代码:

fig = plt.figure(1, figsize=(12,8), tight_layout=True)
ax1 = fig.add_subplot(211)
df[['value A', 'value B']][df['value C'] == 1].plot(ax=ax1, grid=True, secondary_y='value B')

ax2 = fig.add_subplot(212)
df[['value A', 'value B']][df['value C'] == 2].plot(ax=ax2, grid=True, secondary_y='value B')

plt.show()

此代码将在顶部图上显示无x轴标签。相反,这将显示它们:

fig = plt.figure(1, figsize=(12,8), tight_layout=True)
ax1 = fig.add_subplot(211)
df[['value A', 'value B']][df['value C'] == 1].plot(ax=ax1, grid=True)

ax2 = fig.add_subplot(212)
df[['value A', 'value B']][df['value C'] == 2].plot(ax=ax2, grid=True, secondary_y='value B')

plt.show()

或者这个:

fig = plt.figure(1, figsize=(12,8), tight_layout=True)
ax1 = fig.add_subplot(211)
df[['value A', 'value B']][df['value C'] == 1].plot(ax=ax1, grid=True, secondary_y='value B')

ax2 = fig.add_subplot(212)

plt.show()

会帮我找出原因吗? 我还尝试使用

手动设置顶部图中的刻度
gca().get_xaxis().set_xticks()
gca().get_xaxis().set_xticklabels()

pandas v 0.18

matplotlib v 1.5.1

但它不起作用。 非常感谢! SERG

0 个答案:

没有答案