为地理地块轴子地块设置clim

2024-09-19 23:35:46 发布

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

我正在使用geoplot,它使用matplotlib创建绘图

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

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

以下是一个例子:

enter image description here

如果您能帮助解决此问题,我们将不胜感激。我试着把vminvmax喂给geoplot.pointplot,但它们都没有效果

编辑:

我找到了一个“解决办法”。通过向南极的每个子地块添加一个点,它会落在图形的边界之外,从而人为地增加颜色条的范围。我不是在回答这个问题,因为这是一种让我想做的事情变得很糟糕的方式,而且并不理想。这是通过以下代码完成的:

t = t.append({'altitude': max_alt, 'geometry': Point(0, -90)}

Tags: 代码功能绘图matplotlib蓝色cmap图例理想
1条回答
网友
1楼 · 发布于 2024-09-19 23:35:46

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

import numpy as np
from matplotlib import colors, cm

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

这将把颜色映射规范化为x的比例,然后将这些对象传递到geoplot.pointplot的每个调用中

geoplot.pointplot(..., cmap=cmap, norm=norm)
geoplot.pointplot(..., cmap=cmap, norm=norm)
# etc...

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

相关问题 更多 >