我有一個 csv 檔案和一個 python 腳本,我在其中使用 pandas 和 matplotlib 來繪制值。腳本是
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sys
def main(argv):
in_csv_file=argv[0]
print(argv[0])
df= pd.read_csv(in_csv_file)
print(df.head())
print(df.columns.tolist())
df.plot(kind='line',x='Frame',y='Confidence',color='blue', grid=True)
#plt.show()
plt.savefig('output.png')
if __name__ == '__main__':
main(sys.argv[1:])
當 csv 中的所有行都具有唯一的“Frame”值時,這沒有問題。但是如果我有這個 csv 會發生什么
Frame,V1,V2,V3,V4,V5,Confidence
1,0,0,0,0,0,0
2,0,0,0,0,0,0
3,0,0,0,0,0,0
4,0,0,0,0,0,0
5,0,0,0,0,0,0
6,4,2,3,3,4,0.5
7,4,2,3,3,4,0.7
8,4,2,3,3,4,0.7
9,4,2,3,3,4,0.9
9,4,2,3,3,4,0.5
10,4,2,3,3,4,0.7
11,4,2,3,3,4,0.9
12,4,2,3,3,4,0.6
13,4,2,3,3,4,0.5
14,4,2,3,3,4,0.3
15,0,0,0,0,0,0
在這種情況下,我得到了一個像

但是我想要一個更像的情節

如您所見,來自 8 的值后跟兩個表示 9 的值,然后是一個表示 10 的值。
這可能嗎,我該如何修改代碼來處理它?
uj5u.com熱心網友回復:
一種方法是旋轉你的資料和繪圖:
(df.assign(count=df.groupby('Frame').cumcount())
.pivot(index='Frame', columns='count', values='Confidence')
.ffill(axis=1)
.plot(color='C0', legend=None, ylabel='Confidence')
)
這使:

現在,當有兩個連續的重復項時,這可能會給出不同的輸出,例如,當有兩個8幀時,您期望什么?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/331262.html
標籤:Python 熊猫 matplotlib
上一篇:繪制多個圖形時如何修復Matplotlib中的透明度重疊?
下一篇:關閉視窗后方法仍在運行
