You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:25:17