How to limit x axis range using imshow ()?

I have the following data

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 

what i draw with imshow()

The result is as follows: enter image description here

Here is my code:

 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: how to show only results from -4 to 4? Intuitively, I thought about changing the extent=[-4.00,4.00,0.,3.00] , but then the axis just shifts. The result looks like this: enter image description here

+4
source share
1 answer

Setting the degree of imshow is good, as it determines the range of your data. It does not indicate the range displayed, because it is a property of the axes and can be set by simply adding 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) 

enter image description here

+4
source

All Articles