我有一个基本地图地图,加载到美国各州的形状文件中,对于每个州,我将某种颜色映射到该州的形状的多边形上,然后将其添加到绘图中。添加这些多边形和颜色是成功的,但我的问题是,我想要一个图例,显示之间的最大颜色和最小颜色之间的梯度,但我似乎不知道如何。colorbar()方法需要一个可映射的,对于我的示例,我不确定是否可能实现,因为我使用多边形而不是imshow()或等高线为地图着色。下面是我写的代码。在
mapAx.set_title("# of votes for Trump")
mapVotes = Basemap(llcrnrlon=-119,llcrnrlat=22,urcrnrlon=-64,urcrnrlat=49,
projection='lcc',lat_1=33,lat_2=45,lon_0=-95)
mapVotes.readshapefile('states', name = 'states', drawbounds=True)
colorVotes = plt.get_cmap('Blues')
trump = {
'New Hampshire': 100406,
'Iowa': 45427,
'South Carolina' : 239851,
'Nevada' : 34531}
state_names = []
for shape_dict in mapVotes.states_info:
state_names.append(shape_dict['STATE_NAME'])
for state, value in trump.items():
#print("{} {}".format(state, value)
try:
seg = mapVotes.states[state_names.index('{}'.format(state))]
color = colorVotes(value/float(trump[max(trump)]))
poly= Polygon(seg, facecolor=color, edgecolor=color)
mapAx.add_patch(poly)
except ValueError:
pass
plt.show()
patch_collection的api示例演示了如何执行colorbar。本质上,您将所有补丁添加到一个列表中,然后将其传递到PatchCollection,后者返回scalermappable。在您的具体案例中:
然后修改cb以显示正确的值。或者根据您的配色方案创建一个mcolor规范,并将其传递到PatchCollection或colorbar中。但是上面的代码产生了:
相关问题 更多 >
编程相关推荐