Как инвертировать ось в неоднородном изображении в matplotlib?

#python #matplotlib

Вопрос:

У меня есть рабочий код построения графика с использованием неоднородного изображения. Код выводится хорошо, но самая низкая вертикальная точка -8, а самая высокая вертикальная точка-1,17. Я хочу изменить это, чтобы сделать -8 самой верхней точкой и 1,17 самой нижней точкой. Я попытался использовать метод invert_yaxis класса Axes matplotlib, но он не работает. Он не выдает никаких ошибок или исключений, он работает успешно, но вывод неверен, как вы можете видеть в результатах.

Рабочий код:

 import numpy as np
import matplotlib.pyplot as plt
from matplotlib.image import NonUniformImage


ltau = np.array(
    [
        -8.       , -7.78133  , -7.77448  , -7.76712  , -7.76004  ,
        -7.75249  , -7.74429  , -7.7356   , -7.72638  , -7.71591  ,
        -7.70478  , -7.69357  , -7.68765  , -7.68175  , -7.67589  ,
        -7.66997  , -7.66374  , -7.65712  , -7.64966  , -7.64093  ,
        -7.63093  , -7.6192   , -7.6053   , -7.58877  , -7.56925  ,
        -7.54674  , -7.52177  , -7.49317  , -7.4585   , -7.41659  ,
        -7.36725  , -7.31089  , -7.24834  , -7.18072  , -7.1113   ,
        -7.04138  , -6.97007  , -6.89698  , -6.82299  , -6.74881  ,
        -6.67471  , -6.60046  , -6.52598  , -6.45188  , -6.37933  ,
        -6.30927  , -6.24281  , -6.17928  , -6.11686  , -6.05597  ,
        -5.99747  , -5.94147  , -5.88801  , -5.84684  , -5.81285  ,
        -5.78014  , -5.74854  , -5.71774  , -5.68761  , -5.65825  ,
        -5.6293   , -5.60066  , -5.57245  , -5.54457  , -5.51687  ,
        -5.48932  , -5.46182  , -5.43417  , -5.40623  , -5.37801  ,
        -5.3496   , -5.32111  , -5.29248  , -5.26358  , -5.23413  ,
        -5.20392  , -5.17283  , -5.14073  , -5.1078   , -5.07426  ,
        -5.03999  , -5.00492  , -4.96953  , -4.93406  , -4.89821  ,
        -4.86196  , -4.82534  , -4.78825  , -4.75066  , -4.71243  ,
        -4.67439  , -4.63696  , -4.59945  , -4.5607   , -4.52212  ,
        -4.48434  , -4.44653  , -4.40796  , -4.36863  , -4.32842  ,
        -4.28651  , -4.24205  , -4.19486  , -4.14491  , -4.09187  ,
        -4.03446  , -3.97196  , -3.90451  , -3.83088  , -3.7496   ,
        -3.66     , -3.56112  , -3.4519   , -3.33173  , -3.20394  ,
        -3.07448  , -2.94444  , -2.8139   , -2.68294  , -2.55164  ,
        -2.42002  , -2.28814  , -2.15605  , -2.02377  , -1.89135  ,
        -1.7588   , -1.62613  , -1.49337  , -1.36127  , -1.23139  ,
        -1.10699  , -0.99209  , -0.884893 , -0.782787 , -0.683488 ,
        -0.584996 , -0.485559 , -0.383085 , -0.273456 , -0.152177 ,
        -0.0221309,  0.110786 ,  0.244405 ,  0.378378 ,  0.51182  ,
        0.64474  ,  0.777188 ,  0.909063 ,  1.04044  ,  1.1711
    ]
)

arcsec = np.array(
    [
        623.12  , 623.1577, 623.1954, 623.2331, 623.2708, 623.3085,
        623.3462, 623.3839, 623.4216, 623.4593, 623.497 , 623.5347,
        623.5724, 623.6101, 623.6478, 623.6855, 623.7232, 623.7609,
        623.7986, 623.8363, 623.874 , 623.9117, 623.9494, 623.9871,
        624.0248, 624.0625, 624.1002, 624.1379, 624.1756, 624.2133,
        624.251 , 624.2887, 624.3264, 624.3641, 624.4018, 624.4395,
        624.4772, 624.5149, 624.5526, 624.5903, 624.628 , 624.6657,
        624.7034, 624.7411, 624.7788, 624.8165, 624.8542, 624.8919,
        624.9296, 624.9673
    ]
)

randdata = np.arange(150 * 50).reshape(150, 50)

fig, axs = plt.subplots(1, 2, figsize=(19.2, 10.8), dpi=100)

cf00 = NonUniformImage(axs[0], interpolation='nearest', extent=(arcsec[0], arcsec[-1], ltau[0], ltau[-1]), cmap='hot')
cf01 = NonUniformImage(axs[1], interpolation='nearest', extent=(arcsec[0], arcsec[-1], ltau[0], ltau[-1]), cmap='bwr')

cf00.set_data(arcsec, ltau, randdata)
cf01.set_data(arcsec, ltau, randdata)

axs[0].add_image(cf00)
axs[1].add_image(cf01)

axs[0].set_xlim(arcsec[0], arcsec[-1])
axs[1].set_xlim(arcsec[0], arcsec[-1])

axs[0].set_ylim(ltau[0], ltau[-1])
axs[1].set_ylim(ltau[0], ltau[-1])

fig.colorbar(cf00, ax=axs[0])
fig.colorbar(cf01, ax=axs[1])

plt.show()

 

Рабочий Участок:

введите описание изображения здесь

Не Работает Код:

 ## old code
axs[0].invert_yaxis()  # Added to invert y-axis, which messes up the plot
axs[1].invert_yaxis()  # Added to invert y-axis, which messes up the plot

plt.show()
 

Не Рабочая Фигура:
введите описание изображения здесь