使用 pyplot 绘制多线图

问题描述 投票:0回答:2

我想绘制一个多线图,其中有 10 条线对应于每个客户端,值作为标签(Y 轴),Round 作为 X 轴......实现这一点的最佳方法是什么......我正在阅读使用 read_csv 从 csv 文件获取数据并使用 pyplots 获取结果...任何人都可以帮助我吗 enter image description here

我尝试用 pyplots 绘图,但结果是错误的......我期望每个客户对应 10 个线图。在标签列下,某一轮的每个折线图的值。 例如。对于第 0 轮,客户端 0 的标签为 0..... X 轴圆形,Y 轴所有标签列中的唯一值

python matplotlib
2个回答
0
投票

尝试这个脚本。它可能有效,或者至少给出了一个基本的想法:)

也检查这个问题。

在 matplotlib 中绘制多条线图

import matplotlib.pyplot as plt
all_labels = [
    [0, -1, -1, 1, -1, 0, 1, -1, 1,  0],
    [0, 1, 0, -1, -1, 1, 1, -1, 0,  1],
    [1, -1, -1, 1, -1, 0, -1, -1, 1,  1],
    [-1, 0, 1, 1, -1, -1, 1, 1, -1,  0],
    [1, 1, 0, -1, -1, 0, 1, -1, 1,  -1]
]

clients2labels = [[ round[client_no] for round in all_labels ]for client_no in range(len(all_labels[0]))]

x = [i for i in range(len(all_labels))]
for labels in clients2labels:
    plt.plot(x, labels)

plt.xlabel("Round")
plt.ylabel("Labels")
plt.title('Clients')
plt.show()

0
投票

你使用的是 pandas 的

read_csv
吗?如果是这样,您可以使用
matplotlib.pyplot
:

直接从 pandas 进行绘图
import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.read_csv('your_csv.csv') 
# If you just want everything on one plot:
df.plot()

# However, typically we want a little more control over our plots
# Creating an ax object so we have a little more control over everything
# Here is if you want each line on a single figure 
fig, ax = plt.subplots(nrows=1, ncols=1)
columns = df.columns 
for col in columns:
    df[col].plot(ax = ax)

ax.set_xlabel("X")
ax.set_ylabel("Y")

如果您想在同一画布上显示多个图形,则更改很小,但您可能会发现此页面很有帮助:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplots.html

对于 pandas 的绘图选项,您可能会发现此页面也很有帮助:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html

© www.soinside.com 2019 - 2024. All rights reserved.