打印数据而不是图像时显示。方面和范围之间的关系?

2024-04-24 10:20:21 发布

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

我正在用matplotlib中的imshow绘制二维数据数组。我有一个问题试图缩放结果的情节。数组的大小为30x1295个点,但单位范围为: extent = [-130,130,0,77] 如果我绘制的数组没有范围,我得到正确的绘图,但如果我使用范围,我得到的绘图有错误的方面。 这是一个相当初级的问题,但总是有一个第一次:我如何能控制方面和大小的情节在同一时间? 谢谢

亚历克斯

p.D.对于正确的情况,代码是: imshow(np.log10(psirhoz+1e-5),origin='lower')

对于错误的人: imshow(np.log10(psirhoz+1e-5),origin='lower', extent =[z_ax.min(),z_ax.max(),rho_ax.min(),rho_ax.max()])

我希望这能澄清一些事情。


Tags: 绘图错误np绘制数组originaxmin
2条回答

在这种情况下,pyplot.matshow()可能也很有用:

from matplotlib import pyplot as plt
import numpy as np
dat = np.array(range(9)).reshape(3,3)
plt.matshow(dat)
plt.show()

结果:

enter image description here

我猜你是想在最后的情节中有“正方形”像素?

例如,如果我们绘制与您类似的随机数据:

import numpy as np
import matplotlib.pyplot as plt

data = np.random.random((30, 1295))

fig, ax = plt.subplots()
ax.imshow(data, extent=[-130,130,0,77])
plt.show()

我们将得到一个“拉伸”像素的图像:

enter image description here

所以,首先,matplotlib中的“aspect”指的是数据坐标中的aspect。这意味着我们必须通过几个篮圈才能得到你想要的。

import numpy as np
import matplotlib.pyplot as plt

def main():
    shape = (30, 1295)
    extent = [-130,130,0,77]

    data = np.random.random(shape)

    fig, ax = plt.subplots()
    ax.imshow(data, extent=extent, aspect=calculate_aspect(shape, extent))
    plt.show()

def calculate_aspect(shape, extent):
    dx = (extent[1] - extent[0]) / float(shape[1])
    dy = (extent[3] - extent[2]) / float(shape[0])
    return dx / dy

main()

相关问题 更多 >