我有一个类似的问题,之前已经回答了.但是,它与Pandas包的使用不同.
这是我之前的问题:matplotlib – No xlabel and xticks for twinx axes in subploted figures
所以,我最后一个问题就是为什么在使用这个Python代码时它没有显示第一行图的xlabel和xticks.
两个笔记:
>我也使用了子图而不是gridspec但结果相同.
>如果取消注释此代码中的任何注释行,这与在每个图中的轴上使用Pandas相关,则xlabel和xticks将消失!
import matplotlib.pyplot as plt
import matplotlib.gridspec as gspec
import numpy as np
import pandas as pd
from math import sqrt
fig = plt.figure()
gs = gspec.GridSpec(2, 2)
gs.update(hspace=0.7, wspace=0.7)
ax1 = plt.subplot(gs[0, 0])
ax2 = plt.subplot(gs[0, 1])
ax3 = plt.subplot(gs[1, 0])
ax4 = plt.subplot(gs[1, 1])
x1 = np.linspace(1,10,10)
ax12 = ax1.twinx()
ax1.set_xlabel("Fig1")
ax12.set_xlabel("Fig1")
ax1.set_ylabel("Y1")
ax12.set_ylabel("Y2")
# pd.Series(range(10)).plot(ax=ax1)
ax12.plot(x1, x1**3)
ax22 = ax2.twinx()
ax2.set_xlabel("Fig2")
ax22.set_xlabel("Fig2")
ax2.set_ylabel("Y3")
ax22.set_ylabel("Y4")
# pd.Series(range(10)).plot(ax=ax2)
ax22.plot(x1, x1**0.5)
ax32 = ax3.twinx()
ax3.set_xlabel("Fig3")
ax32.set_xlabel("Fig3")
ax3.set_ylabel("Y5")
ax32.set_ylabel("Y6")
# pd.Series(range(200)).plot(ax=ax3)
ax42 = ax4.twinx()
ax4.set_xlabel("Fig4")
ax42.set_xlabel("Fig4")
ax4.set_ylabel("Y7")
ax42.set_ylabel("Y8")
# pd.Series(range(10)).plot(ax=ax42)
plt.subplots_adjust(wspace=0.8, hspace=0.8)
plt.show()
最佳答案 我刚刚遇到了同样的问题,因为我正在混合用matplotlib制作并用熊猫制作的图.
你不应该用熊猫绘图,以下是你可以替换的方法:
pd.Series(range(10)).plot(ax=ax42)
同
ax42.plot(pd.Series(range(10))