我要在正在创建的Geopandas世界Choropleth中使用颜色栏编辑多个内容。即大小(以便它与地图本身大致匹配),文本大小(当前显示得太小),我也想为其添加标签。从阅读的内容来看,似乎没有一种简单的方法可以在geopandas中明确地做到这一点,所以我想知道是否有人可以提供任何解决方法?任何帮助将不胜感激。
这是我当前正在使用的代码(在某些情况下,中间部分只是将列表与国家/地区的数字合并在一起,我将其用作颜色的基础)到框架上。
fig, ax = plt.subplots(figsize=(40,29.171))
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world=pd.DataFrame(world)
world['LEADS']=0.1
world = world.set_index('name')
world['name']=world.index
for x, y in zip(Countries, country_counts):
world.loc[x, 'LEADS'] = y
world=geopandas.GeoDataFrame(world)
world = world[(world.index != "Antarctica")]
ax.set_axis_off()
#ax.legend(title="Leads")
world.plot(ax=ax, column='LEADS', cmap='Oranges', legend=True,linewidth = 1.5)
plt.tight_layout()
plt.savefig('plot_image.png', bbox_inches='tight', transparent=True)
理想的解决方案是保持图例选项具有的颜色,指定大小和文本大小,并在栏的顶部启用标签。我正在努力弄清自己是如何完成这些工作的。
最佳答案
找到的答案here帮助我找到了解决方法。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize = (30,25))
vmin = data.column.min()
vmax = data.column.max()
data.plot(ax=ax,column = column,edgecolor='black',cmap = 'YlOrRd',legend = False)
plt.xlim([6,19])
plt.ylim([36,47.7])
plt.xticks([], [])
plt.yticks([], [])
cax = fig.add_axes([1, 0.1, 0.03, 0.8])
sm = plt.cm.ScalarMappable(cmap='YlOrRd', norm=plt.Normalize(vmin=vmin, vmax=vmax))
sm._A = []
cbr = fig.colorbar(sm, cax=cax,)
cbr.ax.tick_params(labelsize=200)
plt.tight_layout()
plt.savefig(os.path.join('out','fig.png'),format = 'png',bbox_inches='tight')
plt.show()
一旦有了Colorbar对象
my_cbar
,就可以以matplotlib方式设置属性。在这里,我更改了标签尺寸。如果需要保存图形,请记住使用bbox_inches='tight'
:否则,不会保存颜色栏。我的输出是这样的,但修改了colorbar fontsize。
关于python - 在Geopandas中编辑Colorbar(图例)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53158096/