当您绘制数据而不是图像时,它会显示。方面和范围之间的实现?

时间:2013-09-13 10:42:27

标签: python matplotlib plot

我正在使用matplotlib中的imshow绘制2D数据数组。我在尝试缩放结果图时遇到问题。数组的大小为30x1295点,但单位范围为:     extent = [-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()])

我希望这澄清一点。

2 个答案:

答案 0 :(得分:12)

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

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

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”指的是 data 坐标中的方面。这意味着我们必须通过几个环节来获得你想要的东西。

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

答案 1 :(得分:6)

在这种情况下, // loop to get all the files in the remote site while (true) { Exchange remoteExchange = consumerTemplate.receive(srcEndPoint.toString(), 5000); if (remoteExchange == null) { break; } Exchange postExchange = producerTemplate.send(destEndPoint.toString(),remoteExchange); /* In case on error * */ if(null != postExchange.getException()){ throw postExchange.getException(); } } } catch (Exception ex){ LOGGER.error("Error Picking up from Customer ",ex); }finally{ try { consumerTemplate.stop(); } catch (Exception ex) { LOGGER.error("Error Stopping Consumer template ",ex); } } } 也可能有用:

pyplot.matshow()

结果:

enter image description here