python - 删除 Xarray 子图中的共享颜色条

标签 python matplotlib plot python-xarray

我正在尝试通过使用 Xarrays 的高级绘图功能制作共享颜色条来微调我的子图。目前我的情节看起来是enter image description here我想制作一个通用的颜色条并修复 yaxis,以便只有第一个子图 y 轴具有刻度和标签。我用来绘制它的代码如下所示:

fig, (ax1, ax2) = plt.subplots(ncols=2, sharey=True, figsize=(14,10))
Var1_monthly_clim_N.plot(ax=ax1,vmin=6, vmax=14, cmap='jet');

Var2_monthly_clim_S.plot(ax=ax2, vmin=6, vmax=14, cmap='jet', yticks=[]);
## why is yticks removing ticks from both axis
## Var1 and Var 2 have similiar dimensions
Var1
>><xarray.DataArray 'R_metric' (month: 12, lat: 1, lon: 720)>
array([[[ 9.899495,  9.942897, ...,  9.814826,  9.856807]],

   [[ 9.578215,  9.610594, ...,  9.514423,  9.546191]],

   ...,

   [[11.974784, 12.019565, ..., 11.886591, 11.930419]],

   [[10.237672, 10.285891, ..., 10.142638, 10.189836]]])
Coordinates:
* lon      (lon) float32 -180.0 -179.5 -179.0 -178.5 ... 178.5 179.0 179.5
* month    (month) int64 1 2 3 4 5 6 7 8 9 10 11 12
Dimensions without coordinates: lat

我不是最精通 python 绘图的,我尝试使用 this尝试使用imshow绘图的想法

img1 = Var1.data
img2 = Var2.data 
plt.subplot(1,2,1)
plt.imshow(img1, vmin=6, vmax=14, cmap='jet', aspect='auto')
plt.subplot(1, 2, 2)
plt.imshow(img2, vmin=6, vmax=14, cmap='jet', aspect='auto')
plt.colorbar()
>>TypeError: Invalid dimensions for image data

我如何使用 xarray 的高级绘图函数快速完成此操作,也就是说,不将数据提取到 numpy 数组中并制作 meshgrid 和所有绘图?

最佳答案

我从未使用过 xarray,所以我可能是错的,但是,from looking at the documentation ,看起来您可以将 add_colorbar=False 传递给您第一个 plot() 调用以抑制创建其中一个颜色条。

至于您的 ylabel 问题,您已请求共享 y 轴,因此如果您从一个标签中删除标签,您也会从另一个中删除它们。有趣的是,plt.subplots(..., sharey=True) 应该已经设置好了只有最左边的图有 y 标签,并且它们隐藏在其他轴中。如果 xarrayplot() 搞乱了它,那么最好的办法是删除 sharey=True 并确保限制是手工操作相同(例如使用 ax2.set_ylim(ax1.get_ylim()。)

关于python - 删除 Xarray 子图中的共享颜色条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53486899/

相关文章:

Python 绘制多项式

plot - 更改 x 轴以使用 pi 而不是数字进行缩放

python - 在曲面图上画线

python - 在 python 三元条件的任一侧使用语句

python - 防止关闭通过子进程打开的 DOS shell 窗口

python - matplotlib 中沿曲线的注释

python - 图GUI卡住

r - R 中背景中的 hist3D 2D 图

python - 如何在单行中使用 for 循环将这些列表拆分为列表?

python - pytesseract,Windows 错误 : [Error 2] The system cannot find the file specified