首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除Xarray子图中的共享色条

删除Xarray子图中的共享色条
EN

Stack Overflow用户
提问于 2018-11-26 18:18:35
回答 1查看 6.3K关注 0票数 4

我正试图通过使用Xarrays的高级绘图功能来创建一个共享颜色栏来微调我的子图。此刻我的阴谋看上去

我想要做一个普通的颜色条并修复yaxis,这样只有第一个子图y轴有滴答和标签。我用来绘制的代码如下所示:

代码语言:javascript
复制
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绘图的人,我试着用的思想用imshow来尝试

代码语言:javascript
复制
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数组和生成网格以及所有绘图)来快速完成此操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 21:31:32

我从来没有使用过xarray,所以我可能错了,但是,看这些文件,看起来您可以将add_colorbar=False传递给您的第一个plot()调用,以阻止创建一个色条。

至于你的y标签问题,你已经要求有一个共享的y轴,所以如果你从一个移除标签,你也从另一个移除它们。有趣的是,plt.subplots(..., sharey=True)应该已经设置了一些东西,这样只有最左边的图有y标签,并且它们隐藏在其他轴上。如果xarrayplot()正在搅乱这个问题,那么最好的办法是删除sharey=True,并确保手动设置的限制是相同的(例如使用ax2.set_ylim(ax1.get_ylim() )。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53486899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档