2012-12-04 28 views
4

我有以下數據如何用imshow()限制x軸的範圍?

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

回答

4

設置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