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

5
我有以下数据。
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()绘制图像。

结果如下所示: 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)

我的问题是:如何仅显示从-4到4的结果? 直观地想到更改extent=[-4.00,4.00,0.,3.00],但轴仅会移位。 结果如下图所示:enter image description here
1个回答

6

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

所以:

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)

enter image description here


可能是你忘了提到colormap(cm) from matplotlib import cm。谢谢。 - CEB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接