如何为CSV文件中的列值绘制多条线图?

时间:2019-07-10 10:53:23

标签: python-3.x python-2.7 matplotlib

我试图使用线图绘制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)的来源,能量与时间的关系图

1 个答案:

答案 0 :(得分:0)

您需要设置标签。

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()