如何修改Geopandas地图图例颜色?解决PNG保存后图例不可见问题
解决Geopandas地图保存PNG背景变黑及图例刻度不可见问题
问题分析
保存PNG时背景变黑,本质是matplotlib默认保存逻辑未匹配你显示时的背景色,导致白色图例刻度在黑色背景下不可见。以下是针对性的修改方案:
修改后的完整代码
# Creating Visualisation import geopandas as gpd import matplotlib.pyplot as plt worldmap = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres")) merged_df = worldmap.merge(finalDF, left_on='continent', right_on='Continent') vmin, vmax = merged_df['NumberTourists'].min(), merged_df['NumberTourists'].max() # 创建画布并显式设置背景色(可根据需求调整为深色,比如'#1e1e1e') fig, ax = plt.subplots(figsize=(20, 12)) fig.set_facecolor('white') # 绘制地图并获取图例 merged_df.plot(column='NumberTourists', cmap='Blues', linewidth=0.8, ax=ax, edgecolor='0.1', vmin=vmin, vmax=vmax, legend=True) # 调整图例样式,确保刻度可见 leg = ax.get_legend() leg.set_facecolor('white') # 设置图例背景色 for text in leg.get_texts(): text.set_color('black') # 设置图例刻度文本颜色 ax.axis('off') # 背景为白色时,标题改为黑色避免不可见;若用深色背景,标题保持白色 ax.set_title('A visualisation of the number of international \n tourists to visit each continent in 2018', fontsize=20, color='black') # 保存图像时匹配画布背景色,避免变黑 plt.savefig('tourist_map.png', facecolor=fig.get_facecolor(), edgecolor='none', dpi=300) plt.show()
关键修改点说明
- 固定画布背景色:通过
fig.set_facecolor()显式设置背景,消除显示与保存的背景差异。 - 调整图例样式:获取图例对象后,修改背景色和刻度文本颜色,保证与画布背景形成鲜明对比。
- 正确保存图像:
plt.savefig()中指定facecolor=fig.get_facecolor(),确保保存的背景与显示一致,同时设置dpi=300提升清晰度。
如果需要保留深色背景,只需将fig.set_facecolor改为深色(如'#1e1e1e'),同时将图例文本颜色设为'white',标题保持白色即可。
内容的提问来源于stack exchange,提问作者Quaresma
相关产品推荐
相关产品推荐

