gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 03:05:04 26 4
gpt4 key购买 nike

我有以下数据

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

最佳答案

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

关于python - 如何用imshow()限制x轴的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13704373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com