我想创建一个有四个子图的图形。每一行中的绘图共享相同的
y
轴,而同一列中的绘图共享相同的x
轴。在每个轴上,我使用科学计数法表示。虽然可以使用ticklabel_format
删除刻度线的数字,但这并不能移除轴上的指数。通过ax1.xaxis.set_visible(False)
,可以删除x轴
上的1e5
,但同时也会删除刻度线。在保留刻度线的情况下,如何仅删除与另一个子图共享轴的子图中的1eX
?例如,在子图2中如何消除1e5
和1e2
?import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax3 = fig.add_subplot(223)
ax1 = fig.add_subplot(221, sharex = ax3)
ax4 = fig.add_subplot(224, sharey = ax3)
ax2 = fig.add_subplot(222, sharex = ax4, sharey = ax1)
#First plot
x = np.arange(0, 10**5, 100)
y = x
ax1.plot(x,y)
ax1.set_title('Subplot 1')
# Third plot
y = -x
ax3.plot(x,y)
ax3.set_title('Subplot 3')
#Second plot
x = np.arange(0, 100)
y = 10**3 * x + 100
ax2.plot(x,y)
ax2.set_title('Subplot 2')
#Fourth plot
y = -10**3 * x - 100
ax4.plot(x,y)
ax4.set_title('Subplot 4')
ax4.ticklabel_format(style = 'sci', axis='x', scilimits=(0,0))
ax3.ticklabel_format(style = 'sci', axis='x', scilimits=(0,0))
ax1.ticklabel_format(style = 'sci', axis='y', scilimits=(0,0))
ax3.ticklabel_format(style = 'sci', axis='y', scilimits=(0,0))
plt.setp(ax1.get_xticklabels(), visible=False)
plt.setp(ax2.get_xticklabels(), visible=False)
plt.setp(ax2.get_yticklabels(), visible=False)
plt.setp(ax4.get_yticklabels(), visible=False)
plt.show()
返回: