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

如何根据DataFrame列值设置matplotlib散点图颜色及对应图例标签

问题原因

现有代码一次性调用plt.scatter绘制全量数据,Matplotlib默认将单次绘制的所有散点归为同一个图例条目,无法自动把传入的标签元组拆分对应两类取值的散点,因此图例显示异常。

解决方法

按waterfront的取值拆分数据,分别调用plt.scatter绘制不同类别的散点,各自指定颜色和标签即可,修正后的代码如下:

import pandas as pd
import matplotlib.pyplot as plt

d = {'long': [1, 2], 'lat': [3, 4], 'waterfront': [0, 1]}
df = pd.DataFrame(data=d)

colors = {0:'tab:blue', 1:'tab:red'}
label_map = {0: 'Without Waterfront', 1: 'With Waterfront'}

# 遍历不同类别分别绘图
for val in [0, 1]:
    curr_df = df[df['waterfront'] == val]
    plt.scatter(curr_df['long'], curr_df['lat'],
                c=colors[val],
                zorder=3,
                label=label_map[val])

plt.xlabel("Longitude")
plt.ylabel("Latitude")
plt.title("Longitude versus Latitude")
plt.grid(zorder=0)
plt.legend()
plt.show()

该方法对多类别场景也通用,新增类别只需扩展colors和label_map的映射即可。

内容的提问来源于stack exchange,提问作者Ceiun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:15:03