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

使用pyplot绘制10个客户端多折线图的技术求助

多客户端标签轮次折线图实现方案

假设你的CSV数据有两种常见格式,下面分别给出对应实现方法,确保Y轴包含所有labels列的唯一值,且每条折线对应一个客户端:

情况1:数据为长格式(列:Round, Client, labels)

这种格式下,每一行记录单个客户端某一轮的标签值,示例数据如下:

Round,Client,labels
0,0,0
0,1,2
0,2,1
1,0,1
1,1,3
1,2,0
...

实现代码:

import matplotlib.pyplot as plt
import pandas as pd

# 读取CSV数据
df = pd.read_csv('your_data.csv')

# 获取所有唯一客户端和标签值
clients = df['Client'].unique()
unique_labels = sorted(df['labels'].unique())

# 设置画布
plt.figure(figsize=(10, 6))

# 循环绘制每个客户端的折线
for client in clients:
    # 筛选当前客户端数据并按轮次排序
    client_data = df[df['Client'] == client].sort_values('Round')
    # 绘制折线,添加标签
    plt.plot(client_data['Round'], client_data['labels'], marker='o', label=f'Client {client}')

# 配置坐标轴与图例
plt.xlabel('Round')
plt.ylabel('Labels')
plt.title('Client Label Changes by Round')
# 设置Y轴刻度为所有唯一标签值
plt.yticks(unique_labels)
plt.legend(loc='upper right')
plt.grid(alpha=0.3)

plt.show()

情况2:数据为宽格式(列:Round, Client0, Client1, ..., Client9)

这种格式下,每一行对应一轮数据,列是各个客户端的标签值,示例数据如下:

Round,Client0,Client1,Client2
0,0,2,1
1,1,3,0
2,0,2,1
...

实现代码:

import matplotlib.pyplot as plt
import pandas as pd

# 读取CSV数据
df = pd.read_csv('your_data.csv')

# 获取所有客户端列(排除Round列)
client_cols = [col for col in df.columns if col.startswith('Client')]
# 提取所有标签的唯一值并排序
all_labels = df[client_cols].values.flatten()
unique_labels = sorted(list(set(all_labels)))

# 设置画布
plt.figure(figsize=(10, 6))

# 循环绘制每个客户端的折线
for col in client_cols:
    plt.plot(df['Round'], df[col], marker='s', label=col)

# 配置坐标轴与图例
plt.xlabel('Round')
plt.ylabel('Labels')
plt.title('Client Label Changes by Round')
plt.yticks(unique_labels)
plt.legend(loc='upper right')
plt.grid(alpha=0.3)

plt.show()

关键注意事项

  • 必须确保数据按Round排序,否则折线会出现乱序
  • 通过plt.yticks(unique_labels)强制Y轴显示所有标签的唯一值,符合需求
  • 添加marker参数可以让每个数据点更清晰,便于查看轮次对应的标签值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:08:34