4

私は次のデータを持っています

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()

結果は次のようになります。 ここに画像の説明を入力

これが私のコードです:

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]が、軸がずれるだけです。結果は次のようになります。 ここに画像の説明を入力

4

1 に答える 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)

ここに画像の説明を入力

于 2012-12-04T14:07:20.147 に答える