我想绘制一个多线图,其中有 10 条线对应于每个客户端,值作为标签(Y 轴),Round 作为 X 轴......实现这一点的最佳方法是什么......我正在阅读使用 read_csv 从 csv 文件获取数据并使用 pyplots 获取结果...任何人都可以帮助我吗
我尝试用 pyplots 绘图,但结果是错误的......我期望每个客户对应 10 个线图。在标签列下,某一轮的每个折线图的值。 例如。对于第 0 轮,客户端 0 的标签为 0..... X 轴圆形,Y 轴所有标签列中的唯一值
尝试这个脚本。它可能有效,或者至少给出了一个基本的想法:)
也检查这个问题。
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()
你使用的是 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