在子图中使用 ax.twin 时 xticklabels 消失
xticklabels disappear when using ax.twin in subplots
我正在尝试使用 pandas 图创建一个 2 行子图,其中上面的子图有第二个 y 轴,但是第二个轴的创建使得 xticklabels 消失,如下所示。
我使用了以下代码:
fig,axes=plt.subplots(2,1)
ax=axes[0]
pd.Series(range(10)).plot(ax=ax)
ax2=ax.twinx()
(pd.Series(range(10))**2).plot(ax=ax2)
ax=axes[1]
pd.Series(range(10)).plot(ax=ax)
当使用相同的代码但替换子图的顺序时它工作正常:
fig,axes=plt.subplots(2,1)
ax=axes[0]
pd.Series(range(10)).plot(ax=ax)
ax=axes[1]
pd.Series(range(10)).plot(ax=ax)
ax2=ax.twinx()
(pd.Series(range(10))**2).plot(ax=ax2)
为此,我建议按原样使用 matplotlib,而不是通过 pandas。那应该可以解决您的问题。
所以它会是这样的:
import matplotlib.pyplot as plt
fig,axes=plt.subplots(2,1)
ax=axes[0]
ax.plot(pd.Series(range(10)))
ax2=ax.twinx()
ax2.plot(pd.Series(range(10))**2)
ax=axes[1]
ax.plot(pd.Series(range(10)))
我正在尝试使用 pandas 图创建一个 2 行子图,其中上面的子图有第二个 y 轴,但是第二个轴的创建使得 xticklabels 消失,如下所示。 我使用了以下代码:
fig,axes=plt.subplots(2,1)
ax=axes[0]
pd.Series(range(10)).plot(ax=ax)
ax2=ax.twinx()
(pd.Series(range(10))**2).plot(ax=ax2)
ax=axes[1]
pd.Series(range(10)).plot(ax=ax)
当使用相同的代码但替换子图的顺序时它工作正常:
fig,axes=plt.subplots(2,1)
ax=axes[0]
pd.Series(range(10)).plot(ax=ax)
ax=axes[1]
pd.Series(range(10)).plot(ax=ax)
ax2=ax.twinx()
(pd.Series(range(10))**2).plot(ax=ax2)
为此,我建议按原样使用 matplotlib,而不是通过 pandas。那应该可以解决您的问题。
所以它会是这样的:
import matplotlib.pyplot as plt
fig,axes=plt.subplots(2,1)
ax=axes[0]
ax.plot(pd.Series(range(10)))
ax2=ax.twinx()
ax2.plot(pd.Series(range(10))**2)
ax=axes[1]
ax.plot(pd.Series(range(10)))