求助:如何用Matplotlib/GeoPandas按分数为法国城市坐标地图着色
解决方案:根据分数为法国城市点设置渐变色
直接修改你的代码,通过GeoPandas的plot方法实现按分数映射颜色的需求,以下是完整可运行的代码:
import matplotlib.pyplot as plt import geopandas as gp # 基于你的数据集创建GeoDataFrame tmp_geo = gp.GeoDataFrame(TMP, geometry=gp.points_from_xy(TMP.COM_LONG, TMP.COM_LAT)) # 创建绘图画布与轴 fig, ax = plt.subplots(figsize=(10, 8)) # 按分数映射颜色绘制点 tmp_geo.plot( ax=ax, column='COM_MARK', # 指定用评分列控制颜色 cmap='RdYlGn', # 红-黄-绿渐变映射,完美匹配0分红、10分绿的需求 markersize=50, # 调整点的大小,可根据数据量修改 edgecolor='black', # 点的边缘加黑色边框,增强辨识度 legend=True, # 显示颜色条 legend_kwds={ 'label': '城市评分(0-10)', 'orientation': 'horizontal', 'pad': 0.05 } # 自定义颜色条的标签、方向和间距 ) # 优化图表样式 ax.set_title('法国城市评分分布', fontsize=14) ax.set_axis_off() # 隐藏坐标轴刻度,让地图更整洁 plt.show()
关键参数说明
column='COM_MARK':告诉GeoPandas用评分列的值来分配每个点的颜色,值越高越趋近绿色,越低越趋近红色。cmap='RdYlGn':Matplotlib内置的颜色映射方案,刚好覆盖从低分到高分的红-黄-绿渐变,完全适配你的需求。legend_kwds:自定义颜色条的显示样式,比如添加中文标签、设置横向布局,让图表更易读。
可选:自定义严格红-绿渐变
如果需要完全严格的0分纯红、10分纯绿,没有中间黄色过渡,可以手动创建颜色映射:
from matplotlib.colors import LinearSegmentedColormap # 创建纯红到纯绿的自定义渐变 custom_cmap = LinearSegmentedColormap.from_list( 'red_to_green', ['#ff0000', '#00ff00'], N=11 # 对应0-10共11个分值等级 ) # 绘图时替换cmap参数即可 tmp_geo.plot( ax=ax, column='COM_MARK', cmap=custom_cmap, markersize=50, edgecolor='black', legend=True, legend_kwds={'label': '城市评分(0-10)', 'orientation': 'horizontal'} )
内容的提问来源于stack exchange,提问作者ImFabien75
相关产品推荐
相关产品推荐

