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
相关产品推荐
相关产品推荐

