python - imshow 当您绘制数据而不是图像时。 aspect 和 extent 之间的关系?

标签 python matplotlib plot

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

亚历克斯

PD对于正确的情况,代码是: 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()])

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

最佳答案

我猜你想在最终情节中使用“方形”像素?

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

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()

我们将得到一张带有“拉伸(stretch)”像素的图像:

enter image description here

因此,首先,matplotlib 中的“方面”指的是数据 坐标中的方面。这意味着我们必须跳过几个环节才能获得您想要的东西。

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()

关于python - imshow 当您绘制数据而不是图像时。 aspect 和 extent 之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784354/

相关文章:

matlab - 生成颜色三角形

python - PyArg_ParseTuple 默认参数

python - 尽管继承自 CrawlSpider,但 Scrapy NotImplemented 解析错误

python - 如何优化 C++ 以将文件逐行读取到 vector 中?

python - Matplotlib:当我在 x 轴上有日期时,如何添加交替背景色?

python - Jupyter Notebook 不会导入 matplotlib,尽管它似乎已安装

python - 从 Matplotlib 图例中排除 Cartopy 元素

python - 如何减少 python 中的多处理时间

r - 如何在 R 中使用 abline() 绘制简单的垂直线?

python - 在 Plotly 中更改标题字体大小