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

Matplotlib绘图:如何让图例显示单个k值而非整个数组

解决方法

方法1:逐个绘制每个数据点

直接遍历x、y、k的每一组元素,单独绘制每个点并设置对应的标签。这样每个点都会在图例里占一个条目,不过如果k里有重复值,图例也会出现重复的标签。

代码示例:

import matplotlib.pyplot as plt

k = [42., 64., 73., 31., 31., 31., 31., 2., 5., 16.]
# 替换成你实际的x、y数组
x = [1,2,3,4,5,6,7,8,9,10] 
y = [2,4,6,8,10,12,14,16,18,20]

for xi, yi, ki in zip(x, y, k):
    plt.plot(xi, yi, 'o', label=f'name{ki}')
plt.legend()
plt.show()

方法2:合并重复标签(更简洁)

如果k里有不少重复值,不想图例里一堆重复条目,可以先按k值把数据点分组,相同k值的点用同一种样式绘制,对应一个图例条目。

代码示例:

import matplotlib.pyplot as plt
from collections import defaultdict

k = [42., 64., 73., 31., 31., 31., 31., 2., 5., 16.]
x = [1,2,3,4,5,6,7,8,9,10]
y = [2,4,6,8,10,12,14,16,18,20]

# 按k值把数据点分组
groups = defaultdict(list)
for xi, yi, ki in zip(x, y, k):
    groups[ki].append((xi, yi))

# 每组数据单独绘制
for ki, points in groups.items():
    xs, ys = zip(*points)
    plt.plot(xs, ys, 'o', label=f'name{ki}')
plt.legend()
plt.show()

两种方法的区别

  • 方法1适合需要每个数据点都显示独立图例的场景,哪怕标签重复也会全部列出。
  • 方法2适合重复标签多的情况,图例更干净,相同标签的点样式统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:20:30