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

如何在地图中添加两个图例框?自定义标记样式需求

问题描述

我拥有圣保罗市的几何数据及各区域犯罪活动数据库,同时有2个需高亮显示的资产地理点(定义为asset)。使用以下代码绘图时,图例中资产显示为黑色色块,但我希望换成所用的x标记。想了解:能否在图例中同时显示犯罪率色块与x标记?是否需要创建两个图例框?或有其他方案?

import matplotlib.pyplot as plt
from matplotlib.patches import Patch
from matplotlib.path import Path
import matplotlib.lines as mlines

patches = []
for category, color in color_list.items():
    patch = Patch(color=color, label=category)
    patches.append(patch)

# 创建地图
ax = sao.plot(color=sao["Colors"])

# 设置标题
ax.set_title('Risk Areas - São Paulo, Brazil', fontweight='bold')

# 隐藏坐标轴
ax.axis('off')

# 绘制资产点
asset.plot(color='black', markersize = 110, marker= "$x$", ax=ax, label = "assets")

fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)
plt.legend(handles=patches + [Patch(color='black', label="assets")], loc='lower right', title = 'Crime Rate Level for Districts')
plt.show()
解决方案

不需要创建两个图例框,一个图例即可同时显示犯罪率色块和资产的x标记,核心是用mlines.Line2D替代Patch来生成资产的图例项:

修改步骤

  1. 保留原有生成犯罪率分类色块图例的Patch列表
  2. 用mlines.Line2D创建资产的图例条目,指定marker为"$x$"、颜色为黑色,这样就能显示x标记而非色块
  3. 将资产的Line2D对象加入图例的handles列表中

修改后的完整代码

import matplotlib.pyplot as plt
from matplotlib.patches import Patch
import matplotlib.lines as mlines

patches = []
for category, color in color_list.items():
    patch = Patch(color=color, label=category)
    patches.append(patch)

# 创建地图
ax = sao.plot(color=sao["Colors"])

# 设置标题
ax.set_title('Risk Areas - São Paulo, Brazil', fontweight='bold')

# 隐藏坐标轴
ax.axis('off')

# 绘制资产点
asset.plot(color='black', markersize = 110, marker= "$x$", ax=ax, label = "assets")

fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)

# 创建资产的图例项(x标记)
asset_legend = mlines.Line2D([], [], color='black', marker="$x$", linestyle='None',
                             markersize=15, label='assets')

# 合并图例项并显示
plt.legend(handles=patches + [asset_legend], loc='lower right', title = 'Crime Rate Level for Districts')
plt.show()

说明

  • mlines.Line2D专门用于创建带标记的图例项,设置linestyle='None'可以只显示标记,不显示线条
  • 调整markersize可以让图例中的x标记和图中资产点的大小匹配
  • 所有图例项(色块+标记)会统一显示在同一个图例框内,无需拆分

内容的提问来源于stack exchange,提问作者gbam-ds

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:52:47