python-3.x - 如何为 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)
解决方案
您需要设置标签。
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()
推荐阅读
- linux - 在 Ansible 中使用查找和复制模块
- corda - 在 Corda 中找不到现有的白名单文件
- python - 使用 Pykinect 和 Open CV 保存 Kinect RGB 和深度图像
- python - 使用 LSTM 预测多个步骤
- c# - 为什么我不能访问作为谓词传递给 LINQ 函数的方法体内的变量?
- ruby-on-rails - 什么可能导致 activerecord sum 返回错误的值?
- reactjs - 使用 recompose setStatic 并将其连接到 redux (nextjs)
- spring-cache - 更改子方法的缓存管理器
- android - Android - 将 Vuforia SDK 添加到现有的 android studio 项目
- assembly - 使用一个变量正确显示消息输出,同时保留其位置