Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除Xarray子批次中的共享颜色栏_Python_Matplotlib_Plot_Python Xarray - Fatal编程技术网

Python 删除Xarray子批次中的共享颜色栏

Python 删除Xarray子批次中的共享颜色栏,python,matplotlib,plot,python-xarray,Python,Matplotlib,Plot,Python Xarray,我试图通过使用Xarrays的高级绘图功能制作一个共享的颜色条来微调我的子绘图。目前,我的绘图看起来很像,我想制作一个通用的颜色条,并修复y轴,以便只有第一个子地块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_mont

我试图通过使用Xarrays的高级绘图功能制作一个共享的颜色条来微调我的子绘图。目前,我的绘图看起来很像,我想制作一个通用的颜色条,并修复y轴,以便只有第一个子地块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

如何使用xarray的高级绘图功能快速完成这项工作,也就是说,不将数据提取到numpy数组中并生成网格网格以及所有用于绘图的功能?

我从未使用过xarray,因此我可能是错的,但是,看起来您可以先将
add_colorbar=False
传递给您
plot()
调用以抑制其中一个颜色栏的创建


至于ylabel问题,您已请求共享y轴,因此,如果您从一个标签中删除标签,也将从另一个标签中删除它们。有趣的是,
plt.subplot(…,sharey=True)
应该已经设置了一些东西,以便只有最左边的图形具有y标签,并且它们隐藏在其他轴中。如果
xarray
plot()
弄乱了这一点,那么你最好的办法就是删除
sharey=True
并手动确保限制相同(例如使用
ax2.set_ylim(ax1.get_ylim()

效果很好,谢谢。你知道plt.imshow为什么不起作用吗?这里,我的数据是以Z=f的形式显示的三维数据(X,Y)由于只有一个Lat维度,但可能是因为我的数组的形状是12x1x720,也可能是因为该函数认为数据集是4-D的?我找到了上述注释的答案。Xarray plotting在内部调用函数来压缩维度。这就是plt.pcolormesh()工作的原因。
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