Ale*_*oir 10 python plot matplotlib
我正在使用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()])
我希望这澄清一点事情.
Joe*_*ton 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()
Run Code Online (Sandbox Code Playgroud)
我们将获得一个"拉伸"像素的图像:

因此,首先,matplotlib中的"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()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,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()
Run Code Online (Sandbox Code Playgroud)
结果:
| 归档时间: |
|
| 查看次数: |
33979 次 |
| 最近记录: |