我正在使用geoplot,它使用matplotlib创建绘图
其中一个功能是geoplot.pointplot
,它在每次调用它时都创建一个AxesSubplot
。这允许您多次调用它并覆盖一堆pointplot
。底层代码只是创建一个matplotlibscatter
我的问题是,对于这些pointplot
中的每一个,geoplot
为它们分配一个单独唯一的cmap
,因此如果一个图的值为40
时为黄色,另一个图可能为蓝色。这是一个问题,因为我不希望一个情节有多个图例。理想情况下,所有图都遵循一个图例,并且图中的值是一致的
以下是一个例子:
如果您能帮助解决此问题,我们将不胜感激。我试着把vmin
和vmax
喂给geoplot.pointplot
,但它们都没有效果
编辑:
我找到了一个“解决办法”。通过向南极的每个子地块添加一个点,它会落在图形的边界之外,从而人为地增加颜色条的范围。我不是在回答这个问题,因为这是一种让我想做的事情变得很糟糕的方式,而且并不理想。这是通过以下代码完成的:
t = t.append({'altitude': max_alt, 'geometry': Point(0, -90)}
“正确的”方法是创建一个}的示例:
matplotlib.cm.cmap
实例和一个matplotlib.colors.Normalize
实例,并分别通过关键字参数cmap
和norm
将它们传递给geoplot.pointplot
。问题中的图像使用的颜色映射是viridis
,下面是创建和规范化viridis
{这将把颜色映射规范化为
x
的比例,然后将这些对象传递到geoplot.pointplot
的每个调用中这将为所有绘图提供相同的颜色栏
相关问题 更多 >
编程相关推荐