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

Python中基于list2元素对list1元素分组及Matplotlib散点图按对应索引着色的实现问题

解决list分组与散点图按值着色的问题

没问题,我来帮你搞定这两个需求,先从你遇到的散点图着色问题入手,再处理分组:

1. 实现散点图按list2元素着色

你之前用color参数只能设置单一颜色,这是因为color接受的是单一颜色值;要实现每个点的颜色对应同索引的list2元素,需要用**c参数**,直接把list2传入即可——Matplotlib会自动根据list2的数值映射到配色方案的颜色上。如果需要更直观的颜色说明,还可以添加颜色条来标注每个颜色对应的list2数值。

修改后的完整代码:

import matplotlib.pyplot as plt

list1 = [1.8, 4.5, 1.1, 2.1, 9.8, 7.6, 11.32, 3.2, 0.5, 6.5]
list2 = [0, 1, 2, 0, 4, 4, 4, 3, 2, 1]

# 用c参数传入list2,实现按对应元素着色
scatter = plt.scatter(list1, list2, c=list2, cmap='viridis')  # viridis是友好的配色方案,可替换为'plasma'/'coolwarm'等
# 添加颜色条,标注每个颜色对应的list2数值
plt.colorbar(scatter, label='list2 数值')

# 添加图表标签和标题
plt.xlabel('list1 数值')
plt.ylabel('list2 数值')
plt.title('按list2着色的散点图')
plt.show()

这段代码运行后,每个散点的颜色会和对应位置list2的元素一一对应,颜色条也能帮你快速区分不同数值对应的颜色。

2. 基于list2对list1分组

我们可以用字典来实现分组:以list2的元素为键,对应的list1元素作为值存入列表。遍历两个列表的对应元素,逐步填充字典即可。

实现代码:

list1 = [1.8, 4.5, 1.1, 2.1, 9.8, 7.6, 11.32, 3.2, 0.5, 6.5]
list2 = [0, 1, 2, 0, 4, 4, 4, 3, 2, 1]

# 初始化分组字典
grouped_data = {}

# 遍历对应元素,填充分组
for val1, val2 in zip(list1, list2):
    if val2 not in grouped_data:
        grouped_data[val2] = []
    grouped_data[val2].append(val1)

# 按分组键排序后打印结果
for key in sorted(grouped_data.keys()):
    print(f"分组 {key}: {grouped_data[key]}")

运行后输出的分组结果:

分组 0: [1.8, 2.1]
分组 1: [4.5, 6.5]
分组 2: [1.1, 0.5]
分组 3: [3.2]
分组 4: [9.8, 7.6, 11.32]

这样就完成了按list2元素对list1的分组需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:42:35