如何用imshow()限制x轴的范围?

2024-04-18

我有以下数据

1.105   0.919   0.842   0.715   0.704   0.752   0.827   1.049   0.584   
0.998   0.931   0.816   0.787   0.803   0.856   0.782   0.872   0.710   
1.268   1.189   1.036   0.984   0.847   0.948   1.083   0.864   0.792

我用它来绘制imshow()

The result looks like this: enter image description here

这是我的代码:

from numpy import*
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

shape=(3,9)
velocity=zeros(shape)


fig = plt.figure(figsize=(16, 12), dpi=100)
ax1 = fig.add_subplot(111,aspect='equal')
#   ax1.set_yticks([int(100*j) for j in range(0,4)])
ax1.set_yticks([int(j) for j in range(0,4)])
ax1.set_xticks([int(j) for j in range(-4,5)])
for label in ax1.get_xticklabels() + ax1.get_yticklabels():
    label.set_fontsize(15)
for tick in ax1.get_xticklines() + ax1.get_yticklines():
    tick.set_markeredgewidth(2)
    tick.set_markersize(6)
ax1.set_aspect("equal") 
velocity=loadtxt("fieldvelocitybot-300-100-100_400.dat")

im = plt.imshow(velocity, cmap=cm.jet, interpolation='nearest',origin='lower',vmin=0,vmax=1.7, extent=[-4.50,4.50,0.,3.00])

divider = make_axes_locatable(ax1)
cax = divider.append_axes("right", size="2.5%", pad=0.3)
cb=plt.colorbar(im,cax=cax)
cb.set_label('Speed [$m/s$]')
plt.savefig("speed_400.png")
plt.close(fig)

My problem is: How to show just the results from -4 to 4? Intuitively I thought of changing extent=[-4.00,4.00,0.,3.00], but the axis is then just shifted. The result is like this: enter image description here


设置 imshow 的范围很好,因为这定义了数据的范围。它没有指定显示内容的范围,因为这是轴的属性,可以通过简单地添加 ax1.set_xlim(-4,4) 来设置

So:

from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
import matplotlib.pyplot as plt

velocity=np.random.rand(3,9)

fig, ax1 = plt.subplots(1,1,figsize=(16, 12), dpi=100, subplot_kw={'aspect': 'equal'})

ax1.set_yticks([int(j) for j in range(0,4)])
ax1.set_xticks([int(j) for j in range(-4,5)])

for label in ax1.get_xticklabels() + ax1.get_yticklabels():
    label.set_fontsize(15)
for tick in ax1.get_xticklines() + ax1.get_yticklines():
    tick.set_markeredgewidth(2)
    tick.set_markersize(6)

im = ax1.imshow(velocity, cmap=cm.jet,     interpolation='nearest',origin='lower',vmin=0,vmax=1.7, extent=[-4.50,4.50,0,3])
ax1.set_xlim(-4,4)

divider = make_axes_locatable(ax1)
cax = divider.append_axes("right", size="2.5%", pad=0.3)
cb=plt.colorbar(im,cax=cax)
cb.set_label('Speed [$m/s$]')

plt.savefig("speed_400.png")
plt.close(fig)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用imshow()限制x轴的范围? 的相关文章

随机推荐