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

散点图按weekday_num着色后,如何显示全部分类对应的图例?

散点图按weekday_num着色并显示对应图例的解决方法

你的需求是绘制count与max_temperature_C的散点图,按weekday_num字段区分颜色,但原代码的图例无法正确显示每个weekday_num对应的颜色——问题出在直接用c=comb2['weekday_num']会生成连续色阶,且plt.legend(['weekday_num'])仅添加了单一标签,无法对应每个类别。

下面提供两种可行的解决方法:

方法一:纯Matplotlib实现

通过循环每个weekday_num单独绘制数据点,让每个类别自动生成图例项:

import matplotlib.pyplot as plt

# 获取并排序weekday_num的唯一值
weekday_values = comb2['weekday_num'].unique()
weekday_values.sort()

# 选择离散颜色映射,保证每个类别颜色区分度
color_map = plt.get_cmap('viridis', len(weekday_values))

# 循环绘制每个工作日的数据点
for num in weekday_values:
    # 筛选当前工作日的数据
    subset = comb2[comb2['weekday_num'] == num]
    plt.scatter(subset['count'], 
                subset['max_temperature_C'], 
                color=color_map(num), 
                label=f'工作日 {num}')

# 设置坐标轴标签
plt.xlabel('每日出行次数')
plt.ylabel('最高气温 (°C)')

# 设置图例标题并显示
plt.legend(title='工作日编号')
plt.show()

方法二:用Seaborn简化代码

Seaborn的scatterplot可以直接通过hue参数实现按字段着色并自动生成对应图例,代码更简洁:

import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(data=comb2, 
                x='count', 
                y='max_temperature_C', 
                hue='weekday_num',
                palette='viridis')

plt.xlabel('每日出行次数')
plt.ylabel('最高气温 (°C)')
plt.legend(title='工作日编号')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:10:33