我对熊猫有疑问,无法弄清楚原因。我想用两个子图创建一个图,并绘制所有子图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