[英]Plot a 2D graph from a csv file using matplotlib in Python in ubuntu
我必須使用python將csv文件中的值繪制到圖形中。 我在python中使用以下代碼。 碼:
import numpy as np
import matplotlib.pyplot as plt
def graph():
cv,dv = np.loadtxt('/home/test/test_mat.csv',delimiter=',',unpack=True)
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1,axisbg='white')
plt.plot(x=cv,y=dv)
plt.title('Chemical Presence')
plt.ylabel('dv')
plt.xlabel('cv')
plt.show()
graph()
在代碼中,我試圖從存在的位置加載csv文件。 數據文件看起來像此處數據文件所附的屏幕截圖。 這里col 1 = CV(X軸),而row1 = DV(Y軸)。
CV\Line 1 2 3 4 5
-7.49952 7.6904296 7.64923087 7.81402579 7.59429923 7.73162833
-7.48388 7.56683341 7.51190177 7.38830558 7.67669669 7.38830558
-7.46824 7.03124992 7.38830558 7.49816886 7.51190177 7.66296378
-7.4526 7.53936759 7.66296378 7.71789542 7.62176505 7.6904296
-7.43696 7.49816886 7.73162833 7.45697013 7.71789542 7.38830558
-7.42132 7.01751701 7.20977775 7.48443595 7.58056632 7.81402579
-7.40568 7.58056632 7.71789542 7.70416251 7.49816886 7.58056632
但是我在執行代碼時遇到錯誤,以下是錯誤:
錯誤:在loadtxt項目中的文件“ /home/kishore/.local/lib/python2.7/site-packages/numpy/lib/npyio.py”,第928行= [conv(val)for(conv,val)in zip(轉換器,vals)]
File "/home/kishore/.local/lib/python2.7/site-packages/numpy/lib/npyio.py", line 659, in floatconv
return float(x)
ValueError: could not convert string to float: CV\Line
我是Python編程的新手。 誰能幫助我知道如何解決這個問題。
首先,我們應該避開路徑中的空格,以確保它不會阻塞:
cv,dv = np.loadtxt('/home/kishore/Documents/Owlstone\ developer\ task\ briefing/test_matrix.csv',delimiter=',',unpack=True)
或者,將目錄名更改為沒有空格,例如Owlstone
。
或者,您可以將文件和腳本移動到同一目錄中,並刪除所有路徑信息,以證明在實際中首先找到文件就可以了。 從錯誤輸出中可以明顯看出,您沒有越過這一行,因此請先集中精力。
現在已經超過了逃逸的空間潛力,讓我們集中精力研究文件中的內容。 您的圖片和發布的數據未使用,
作為分隔符。 修復並用作數據
-7.49952,7.6904296,7.64923087,7.81402579,7.59429923,7.73162833
-7.48388,7.56683341,7.51190177,7.38830558,7.67669669,7.38830558
-7.46824,7.03124992,7.38830558,7.49816886,7.51190177,7.66296378
-7.4526,7.53936759,7.66296378,7.71789542,7.62176505,7.6904296
-7.43696,7.49816886,7.73162833,7.45697013,7.71789542,7.38830558
-7.42132,7.01751701,7.20977775,7.48443595,7.58056632,7.81402579
-7.40568,7.58056632,7.71789542,7.70416251,7.49816886,7.58056632
我已經刪除了第一行(而不是上面建議的skiprows=1
,因為它不能解決Too many values to unpack
問題),我可以通過
dv = np.loadtxt('text.csv', delimiter=',')
print(dv)
生產
[[-7.49952 7.6904296 7.64923087 7.81402579 7.59429923 7.73162833]
[-7.48388 7.56683341 7.51190177 7.38830558 7.67669669 7.38830558]
[-7.46824 7.03124992 7.38830558 7.49816886 7.51190177 7.66296378]
[-7.4526 7.53936759 7.66296378 7.71789542 7.62176505 7.6904296 ]
[-7.43696 7.49816886 7.73162833 7.45697013 7.71789542 7.38830558]
[-7.42132 7.01751701 7.20977775 7.48443595 7.58056632 7.81402579]
[-7.40568 7.58056632 7.71789542 7.70416251 7.49816886 7.58056632]]
注意:您可以通過在控制台或代碼中包含以下內容來證明一切正常。
from StringIO import StringIO
c = StringIO("-7.49952,7.6904296,7.64923087,7.81402579,7.59429923,7.73162833\n-7.48388,7.56683341,7.51190177,7.38830558,7.67669669,7.38830558")
print(np.loadtxt(c, delimiter=","))
您也會看到一個不錯的數組。
現在要繪制圖表,我們將使用呈現的數據,並且矩陣的形式為(col2, col1)
(X,Y)
對,因此要繪制的前兩個值是(7.6904296, -7.49952)
和(7.56683341, -7.48388)
而我們忽略了每行的其余部分,第3-6列,最初標記為2,3,4,5
。
def graph():
dv = np.loadtxt('text.csv', delimiter=',')
print(dv)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
x = dv[:,1]
y = dv[:,0]
ax.scatter(x,y)
plt.title('Chemical Presence')
plt.ylabel('CV')
plt.xlabel('DV')
plt.show()
此處的dv[:,0]
表示將數組dv
替換為所有行,僅包含列0的值,其通用格式為array[rows,columns]
。 這段代碼給了我們
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.