这是我的问题。
- 由四个多边形组成的形状文件就是一个例子
用:
fig = plt.figure(figsize =(8,6))
ax = plt.gca()
map = Basemap(llcrnrlon=114.3,llcrnrlat=37.95,urcrnrlon=114.75,urcrnrlat=38.2)
map.readshapefile("xxx",'xxx',zorder =1,)
patches=[]
cs=plt.cm.Blues_r(np.arange(21)/21.)
for info, shape in zip(map.xxx_info, map.xxx):
x,y=zip(*shape)
patches.append( Polygon(np.array(shape), True) ) # facecolor= '#6582B3'
ax.add_collection(PatchCollection(patches, facecolor= cs,
edgecolor='none', linewidths=1.5, zorder=2,alpha = 0.8))
http://i13.tietuku.com/a331edcbeec29d5e.png
但是当我想描绘这四个不同区域的某些特征时(例如:人口;国内生产总值)
### for example
pop = [1000,1500,2000,500] ## corresponding to 4 polygons.
如何设置显示相对人口大小的每个面的facecolor
。
换句话说,人口众多的地区以深蓝色作为其
facecolor
,反之亦然。
更新
我的项目有 22 个多边形(在此处上传)和相应的要素
VALUE = np.array([6152.710436, 21077.95313, 1052.05006, 2891.89123, 5717.184961,
2431.608241, 502.12633, 28384.79976, 0., 73919.84013, 6242.307304,
1072.474419, 35222.73927, 146232.4488, 4703.720773, 4080.297812,
22897.91752, 2683.5972, 472.840926, 3367.341526,16628.64741 ,114564.1283 ])
norm = Normalize()
cmap = plt.get_cmap('Spectral_r')
norm = Normalize()
cs_set =pc.set_facecolor(cmap(norm(VALUE)))
ax.add_collection(pc)
http://i11.tietuku.com/256bce12e2716163.png
我的问题是如何根据值添加颜色条?
我在答案中提到的帖子中尝试了该方法,但它不起作用。
cb = colorbar_index(ncolors=len(VALUE),cmap=cmap, shrink=0.5, labels=VALUE)
cb.ax.tick_params(labelsize=6)
http://i11.tietuku.com/fbfd19949c4ceddd.png
上图的色条标签与真实数据不符?
如何解决这个问题? 有没有更简单的方法来生成颜色条?
我已经想出了一个解决方案。感谢这篇文章
如果有人有更微妙的方式,请在这里发帖!
### original
for info, shape in zip(map.shiqu_info, map.shiqu):
x,y=zip(*shape)
patches.append( Polygon(np.array(shape), True) )
pc = PatchCollection(patches, edgecolor='none',
linewidths=1.5, zorder=2,alpha = 0.8)
## don't set facecolor here
## I add four sentences here!
cmap = plt.get_cmap('Blues')
norm = Normalize()
pop = np.array([1000,1500,2000,500])
pc.set_facecolor(cmap(norm(pop)))
ax.add_collection(pc)
http://i11.tietuku.com/0a07095f88ba17ab.png