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

如何在散点图中用不同颜色区分数据点?附代码与样本数据

按类别区分散点图颜色的解决方案

嘿,我来帮你调整代码,实现用不同颜色区分不同数据点~从你的数据来看,Gender列(0和1)是完美的分组依据,我们可以基于它来给每个点分配不同颜色。

核心思路

原来的plt.plot只能批量设置同一种样式的点,而plt.scatter支持为每个点单独指定颜色,正好满足你的需求。我们可以直接把Gender列作为颜色参数,或者自定义颜色映射让类别更直观。


方案1:使用默认颜色映射快速实现

这个方案最简洁,利用matplotlib的内置颜色映射自动区分Gender的0和1:

import pandas as pd
import matplotlib.pyplot as plt

# 用原始字符串避免Windows路径的转义问题(也可以把\换成//)
data1 = pd.read_csv(r'F:\HCSE\sample_data1.csv', sep=';')
colnames = data1.columns

# 使用scatter绘图,c参数指定颜色由Gender列决定
scatter_plot = plt.scatter(
    x=data1.iloc[:, 0],  # Age列
    y=data1.iloc[:, 2],  # LOS列
    c=data1['Gender'],   # 按Gender分配颜色
    cmap='viridis',      # 可选的颜色映射,比如'coolwarm'也很好看
    alpha=0.7            # 点的透明度,避免重叠时看不清
)

# 设置坐标轴标签
plt.ylabel(colnames[2])
plt.xlabel(colnames[0])

# 添加图例,解释颜色对应的Gender类别
plt.legend(
    handles=scatter_plot.legend_elements()[0],
    labels=['Female', 'Male'],  # 根据你的数据定义0和1对应的含义
    title='Gender'
)

plt.show()

方案2:自定义颜色映射(更灵活)

如果你想指定特定颜色对应某个Gender,比如0用红色,1用蓝色,可以用自定义映射:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Patch

data1 = pd.read_csv(r'F:\HCSE\sample_data1.csv', sep=';')
colnames = data1.columns

# 自定义颜色映射:key是Gender值,value是颜色代码/名称
gender_color_map = {
    0: '#ff6b6b',  # 珊瑚红
    1: '#4ecdc4'   # 薄荷绿
}
# 把每个Gender值映射成对应的颜色
point_colors = data1['Gender'].map(gender_color_map)

plt.scatter(
    x=data1.iloc[:, 0],
    y=data1.iloc[:, 2],
    c=point_colors,
    alpha=0.7
)

# 设置坐标轴标签
plt.ylabel(colnames[2])
plt.xlabel(colnames[0])

# 创建自定义图例
legend_elements = [
    Patch(facecolor=gender_color_map[0], label='Female'),
    Patch(facecolor=gender_color_map[1], label='Male')
]
plt.legend(handles=legend_elements, title='Gender')

plt.show()

小提示

  • 路径问题:Windows路径里的\会被当作转义字符,所以用r'路径'原始字符串或者把\换成//更稳妥
  • 如果你的数据里有更多类别(比如Gender有3个值),这两种方案依然适用,颜色映射会自动扩展
  • alpha参数可以让点半透明,当数据点重叠时更容易看清分布

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:18:23