Я хочу нарисовать фигуру из двух графиков с одной цветной полосой. Тем не менее, эти два участка находятся в разных диапазонах. Я попытался использовать контур, чтобы сделать это, но не получилось. Цветовая полоса contourf всегда отображается в диапазоне последних вспомогательных участков, но мне нужна цветовая полоса, которая находится в диапазоне обоих двух вспомогательных участков. Я изменил контур на pcolor без каких-либо других модифицированных кодов и, наконец, сделал это. Я получил вдохновение по ссылке:
Установить диапазон цветовой шкалы в matplotlib
При этом меня смущает то, что работает и почему. Коды прилагаются
fig, axes = plt.subplots(nrows=1, ncols=2)
j = 0
for ax in axes.flat:
if j == 0:
Z = sensi_n_M(X,Y,n)
varName = 'vegetation coverage'
label = 'dM/M'
elif j == 1:
Z = sensi_n_AS(X,Y,n)
varName = 'average slope'
label = r'{dtan\beta/tan\beta}'
title1 = ax.set_title(r'$\frac{dn/n}{'+label+'}$'+'\n', fontsize=25)
ylabel=ax.yaxis.set_label_text('average slope')
ylabel.set_fontsize(15)
xlabel=ax.xaxis.set_label_text('vegetation coverage')
xlabel.set_fontsize(15)
for tick in ax.xaxis.get_major_ticks():
tick.label1.set_fontsize(10)
for tick in ax.yaxis.get_major_ticks():
tick.label1.set_fontsize(10)
fill = ax.pcolor(X, Y, Z, #rstride=1, cstride=1, #clevs,
#edgecolors = 'r',
cmap=plt.cm.RdBu_r,vmin=-2.4,vmax=1.2)
j = j+1
v = np.linspace(-2.4,1.2,13)
fig.subplots_adjust(left=0.2, wspace=0.8, top=0.8)
cax,kw = mpl.colorbar.make_axes([ax for ax in axes.flat])
cb = fig.colorbar(fill, cax=cax)
cb.set_ticklabels(v)
plt.show()
На рисунке ниже показан цвет
Тем не менее, рисунок ниже о контуре
и коды для контурного графика:
fig, axes = plt.subplots(nrows=1, ncols=2)
j = 0
for ax in axes.flat:
if j == 0:
Z = sensi_n_M(X,Y,n)
varName = 'vegetation coverage'
label = 'dM/M'
elif j == 1:
Z = sensi_n_AS(X,Y,n)
varName = 'average slope'
label = r'{dtan\beta/tan\beta}'
title1 = ax.set_title(r'$\frac{dn/n}{'+label+'}$'+'\n', fontsize=25)
ylabel=ax.yaxis.set_label_text('average slope')
ylabel.set_fontsize(15)
xlabel=ax.xaxis.set_label_text('vegetation coverage')
xlabel.set_fontsize(15)
for tick in ax.xaxis.get_major_ticks():
tick.label1.set_fontsize(10)
for tick in ax.yaxis.get_major_ticks():
tick.label1.set_fontsize(10)
fill = ax.contourf(X, Y, Z, rstride=1, cstride=1, #clevs,
#edgecolors = 'r',
cmap=plt.cm.RdBu_r,vmin=-2.4,vmax=1.2)
j = j+1
v = np.linspace(-2.4,1.2,13)
fig.subplots_adjust(left=0.2, wspace=0.8, top=0.8)
cax,kw = mpl.colorbar.make_axes([ax for ax in axes.flat])
cb = plt.colorbar(fill, cax=cax)
cb.set_ticklabels(v)
plt.show()