首页 > 解决方案 > 如何为 CSV 文件中的列值绘制多条折线图?

问题描述

我尝试使用折线图绘制 4 个节点的能量图,但我无法确定哪条线代表哪个节点 ID(1、2、3 或 4)

我的 csv 看起来像这样:

Time,Source,Destination,Bits,Energy 0,1,2,288,9.9999856 1058,1,2,288,9.9999856 1140,2,1,96,9.9999808 1958,2,3,96,9.9999952 2024,2,1,96,9.9999808 2051,2,3,288,9.999966399 3063,2,3,288,9.9999808 3126,3,2,96,9.999976 3127,2,1,288,9.9999664 3946,3,2,96,9.999961599 8340,1,2,288,9.999952 9418,1,2,288,9.999947199 9479,2,1,96,9.999942399 10299,2,3,96,9.9999712 10365,2,1,96,9.9999472 10758,2,3,288,9.999927999 11770,2,3,288,9.9999568 11832,3,2,96,9.999951999 11842,2,1,288,9.9999328

代码 :

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.read_csv('DS1.csv')

for Energy,data in df.groupby('Source'):
    plt.plot(data['Time'], data['Energy'])
    plt.legend(data['Source'])
    #print(data)

plt.xlabel('Time')
plt.ylabel('Energy')
plt.legend()
plt.show()

我实际上想绘制所有源的源、能量与时间(1 到 4)

标签: python-3.xpython-2.7matplotlib

解决方案


您需要设置标签。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.read_csv('DS1.csv')

for Energy, data in df.groupby('Source'):
    plt.plot(data['Time'], data['Energy'], label=Energy)
    #print(data)

plt.xlabel('Time')
plt.ylabel('Energy')
plt.legend()
plt.show()

推荐阅读