如何在matplotlib上旋转一个非常花哨的imshow?

2024-09-27 23:23:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用imshow表示一个数据数组。它有一个色条来改变比例:

dataset: array([[4.08468330e-10, 2.36415270e-11, 6.58846951e-12, ...,
        2.27156279e-12, 4.23543198e-12, 4.40911000e-12],
       [4.07275560e-10, 2.46574163e-11, 4.82123872e-12, ...,
        2.39588823e-12, 2.42245604e-12, 3.58778000e-12],
       [4.06226210e-10, 2.44212517e-11, 5.70813892e-12, ...,
        2.79494406e-12, 2.90031792e-12, 4.51387000e-12],
       ...,
       [2.98255320e-10, 9.82796704e-12, 3.75858712e-11, ...,
        9.35899785e-12, 6.98967777e-12, 5.09198000e-12],
       [3.00062620e-10, 9.76252520e-12, 3.67877560e-11, ...,
        8.82046279e-12, 8.25714835e-12, 5.48396000e-12],
       [3.05101120e-10, 1.00383871e-11, 3.81238519e-11, ...,
        8.50893319e-12, 7.30771687e-12, 6.40150000e-12]])

The fancy graph

很漂亮,不是吗? 我代表它就像

ax = plt.subplot(111)
img = ax.imshow(Array,extent=[linescan[0]*1e3,linescan[-1]*1e3, 0,linescan.length], aspect = 'auto', interpolation='quadric')
plt.subplots_adjust(bottom=0.1, right=0.8, top=0.9)
cb = plt.colorbar(img)
axcolor = escala


axFFT_cmin = plt.axes([0.25, 0.1, 0.65, 0.03])
axFFT_cmax  = plt.axes([0.25, 0.15, 0.65, 0.03])


sFFT_cmin = Slider(axFFT_cmin, 'min', minFFT, maxFFT, valinit=FFT_min)
sFFT_cmax = Slider(axFFT_cmax, 'max', minFFT, maxFFT, valinit=FFT_max)

def updateFFT(val, s=None):
    _cmin = sFFT_cmin.val
    _cmax = sFFT_cmax.val
    img.set_clim([_cmin, _cmax])
    plt.draw()

sFFT_cmin.on_changed(updateFFT)
sFFT_cmax.on_changed(updateFFT)
#show everything
plt.show()

然而,要表现它,最漂亮的方法就是顺时针旋转90度。我已经尝试设置轴限制,如下所述: https://matplotlib.org/tutorials/intermediate/imshow_extent.html

但是我对python太陌生了(4个月),无法实现它。 Matplotlib normaly表示从左上角开始的数组;您可以轻松地将其更改为左下角,但不能更改为右下角。 如果有人有什么建议/例子/帮助,我将不胜感激。非常感谢。你知道吗

PD:我知道我可以编辑数据,这样做很容易,但我想做许多交互式功能的图形,有些已经做了。也许我太挑剔了,但最有效的方法不是转置1.000.000 int的数组,而是用不同的方式表示它们。你知道吗


Tags: 数据imgpltval数组axextentimshow

热门问题