带有公共水平颜色栏的列中的matplotlib子批次

2024-09-28 17:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看到了使多个子地块保持每个子地块的纵横比“相等”的很好的解决方案:

Matplotlib 2 Subplots, 1 Colorbar

https://stackoverflow.com/a/23953487/10659110

…但几何结构不同。 我挥动3个“方形”图(3个具有相同x和y范围的彩色贴图),我想将它们排列在一个垂直列中,在顶部或底部有一个水平的彩色条

这里有一个例子:

#!/usr/bin/env python3

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from pylab import meshgrid,cm,imshow,contour,clabel,colorbar,axis,title,show

Nlatt  = 200 
Lrange = 20  

# Create grid values first.
xs = np.linspace(-Lrange, Lrange, Nlatt,  endpoint=True)
ys = np.linspace(-Lrange, Lrange, Nlatt , endpoint=True)
X,Y = meshgrid(xs, ys)         # grid of point

Zx = np.sin(Y-X)*np.sin(Y+X)
Zy = np.cos(Y)*np.sin(X)
ZZ = np.sqrt( Zx**2 + Zy**2 )

fig = plt.figure()  #e.g. "2,3,4" means "2x3 grid, 4th subplot"
ax1 = fig.add_subplot(3,1,1, aspect = "equal")
ax2 = fig.add_subplot(3,1,2, aspect = "equal")
ax3 = fig.add_subplot(3,1,3, aspect = "equal")

im1 = ax1.pcolor( X , Y , Zx , cmap='bwr' ,vmin=-2.5, vmax=2.5)
im2 = ax2.pcolor( X , Y , Zy , cmap='bwr' ,vmin=-2.5, vmax=2.5)
im3 = ax3.pcolor( X , Y , ZZ , cmap='bwr' ,vmin=-2.5, vmax=2.5)

plt.tight_layout()

plt.show()

我想在顶部(或底部)添加公共水平颜色条,并共享x轴,以便标签“x”和x坐标编号仅显示在第三个绘图的底部。实际上,所需的输出是Matplotlib shared horizontal colorbar aligned with bottom axis in subplots中描述的输出,但我不太清楚这个解决方案是如何工作的。此外,我还需要一个标签和底部x轴的编号。谢谢你的每一个提示


Tags: importaddnpfigpltsinequalgrid