Gre*_*ory 2 matplotlib python-2.7
我想让两个图具有相同的宽度,但是生成的代码会缩小 imshow 图。
xx = np.linspace(0.0,255.5,512)
yy = np.linspace(0.0,255.5,512)
Func = np.random.rand(len(xx),len(yy))
f, axarr = plt.subplots(2,1)
f.tight_layout()
im = axarr[0].imshow(Func, cmap = 'jet', interpolation = 'lanczos',origin = 'lower')
pos = axarr[0].get_position()
colorbarpos = [pos.x0+1.05*pos.width,pos.y0,0.02,pos.height]
cbar_ax = f.add_axes(colorbarpos)
cbar = f.colorbar(im,cax=cbar_ax)
axarr[1].plot(xx,Func[:,255],yy,Func[255,:])
plt.show()
plt.close('all')
Run Code Online (Sandbox Code Playgroud)
编辑:我还想让 imshow 的情节看起来没有拉伸(本质上,我需要适当拉伸宽度和长度,以便纵横比仍然相等)。
一些选项:
在 imshow 图中使用 `aspect="auto"
plt.imshow(..., aspect="auto")
Run Code Online (Sandbox Code Playgroud)
调整图形边距或图形大小,使下轴与 imshow 图具有相同的大小,例如
plt.subplots_adjust(left=0.35, right=0.65)
Run Code Online (Sandbox Code Playgroud)
您可以使用make_axes_locatable功能mpl_toolkits.axes_grid1来划分图像轴,为其他轴腾出空间。
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
xx = np.linspace(0.0,255.5,512)
yy = np.linspace(0.0,255.5,512)
Func = np.random.rand(len(xx),len(yy))
fig, ax = plt.subplots(figsize=(4,5))
im = ax.imshow(Func, cmap = 'jet', interpolation = 'lanczos',origin = 'lower')
divider = make_axes_locatable(ax)
ax2 = divider.append_axes("bottom", size=0.8, pad=0.3)
cax = divider.append_axes("right", size=0.08, pad=0.1)
ax2.plot(xx,Func[:,255],yy,Func[255,:])
cbar = fig.colorbar(im,cax=cax)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
931 次 |
| 最近记录: |