gpt4 book ai didi

python - 如何显示 basemap 的颜色条

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:09 25 4
gpt4 key购买 nike

我有一个 shapefile和这样的系列:

UF
Acre 261
Alagoas 657
Amazonas 793
Amapá 162
Bahia 1867
Ceará 5657
Distrito Federal 430
Espírito Santo 1734
Goiás 4110
Maranhão 1421
Minas Gerais 11812
Mato Grosso do Sul 1006
Mato Grosso 1391
Pará 1889
Paraíba 1575
Pernambuco 4019
Piauí 1665
Paraná 3745
Rio de Janeiro 1613
Rio Grande do Norte 1998
Rondônia 3102
Roraima 237
Rio Grande do Sul 5643
Santa Catarina 5372
Sergipe 413
São Paulo 8237
Tocantins 771
Name: 0, dtype: int64

UF 是 shapefile 中显示的州名称,系列值是我想用来生成颜色以填充 basemap 的值。这是我到目前为止得到的:

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from mpl_toolkits.basemap import Basemap
import matplotlib.cm as cm
import matplotlib as mpl
from matplotlib.collections import PatchCollection


def make_map(ax):
m = Basemap(projection='merc', llcrnrlat=-35, urcrnrlat=7,
llcrnrlon=-77, urcrnrlon=-32, resolution='i', ax=ax)
m.fillcontinents()
return m

def drawstates(fig, ax, data, shapefile='../BRA_adm_shp/BRA_adm1'):
shp = m.readshapefile(shapefile, 'states', drawbounds=False)

norm = mpl.colors.Normalize(vmin=data.min(), vmax=data.max())
cmap = cm.hot
sm = cm.ScalarMappable(norm=norm, cmap=cmap)
colors = []
patches = []

for nshape, seg in enumerate(m.states):
uf = m.states_info[nshape]['NAME_1']
color = sm.to_rgba(data[uf])
poly = Polygon(seg, facecolor=color, edgecolor='white')
ax.add_patch(poly)
patches.append(poly)
colors.append(color)

p = PatchCollection(patches, cmap=cmap)
p.set_array(np.array(colors))
cb = fig.colorbar(p, ax=ax, orientation='horizontal')

fig, axes = plt.subplots(1, 2, figsize=(20, 10))
m = make_map(axes[0])
drawstates(fig, m.ax, m1)

这导致:

enter image description here

我不确定这是否是正确的做法,但我想知道如何保持输入值的比例,即不在 0 和 1 之间缩放颜色条,以及如何防止这个大的距离在 map 和它的颜色条之间。

最佳答案

多边形根据 ScalaMappable sm 着色。因此,这个 ScalarMappable 就是您想要作为颜色图参数提供的那个

sm = cm.ScalarMappable(norm=norm, cmap=cmap)
sm.set_array([]) # can be an empty list, only needed for matplotlib < 3.1
# ...
cb = fig.colorbar(sm, ax=ax, orientation='horizontal')

可以使用 pad 参数设置轴和颜色条之间的填充。默认值应为 pad=0.15,您需要自己找到合适的值。

关于python - 如何显示 basemap 的颜色条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46495901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com