首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为地理图轴子图设置clim

为地理图轴子图设置clim
EN

Stack Overflow用户
提问于 2020-01-15 12:22:44
回答 1查看 382关注 0票数 1

我使用的是geoplot,它使用matplotlib来创建绘图。

其中一个这样的功能是geoplot.pointplot,它在您每次调用它时都会创建一个AxesSubplot。这允许您多次调用它并覆盖一堆matplotlib,底层代码只是创建一个pointplot scatter

我的问题是,对于这些pointplot中的每一个,geoplot会分别为它们分配一个唯一的cmap,因此如果一个图的值为40时是黄色的,那么另一个图可能是蓝色的。这是一个问题,因为我不想在一个情节中有多个图例。理想情况下,所有绘图都遵循单个图例,并且绘图之间的值是一致的。

下面是一个示例:

任何帮助解决这个问题的人都将不胜感激。我试着把vminvmax喂给geoplot.pointplot,但是它们都没有效果。

编辑:

我找到了一个“解决方案”。通过在南极处的每个子图中添加一个点,它会落在图形的边界之外,并因此人为地增加色条的范围。我不会回答这个问题,因为这是一种非常老套的方式来完成我想要做的事情,而且不是很理想。这是通过以下代码完成的:

代码语言:javascript
代码运行次数:0
运行
复制
t = t.append({'altitude': max_alt, 'geometry': Point(0, -90)}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-16 13:12:43

正确的做法是创建一个matplotlib.cm.cmap实例和一个matplotlib.colors.Normalize,并分别通过关键字参数cmapnorm将它们传递给geoplot.pointplot。问题中的图像使用的色彩映射表是viridis,下面是创建和规范化viridis cmap的示例

代码语言:javascript
代码运行次数:0
运行
复制
import numpy as np
from matplotlib import colors, cm

cmap = cm.get_cmap('viridis')
norm = colors.Normalize(min(x), max(x))

这将使色彩映射表标准化为x的比例,然后将这些对象传递到geoplot.pointplot的每次调用中。

代码语言:javascript
代码运行次数:0
运行
复制
geoplot.pointplot(..., cmap=cmap, norm=norm)
geoplot.pointplot(..., cmap=cmap, norm=norm)
# etc...

这将为所有绘图提供相同的颜色条。

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

https://stackoverflow.com/questions/59745103

复制
相关文章

相似问题

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