我必须使用 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 文件。 数据文件类似于此处附加的屏幕截图 data file 。这里,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
但是我在执行代码时遇到错误。以下是错误:
错误: 文件“/home/kishore/.local/lib/python2.7/site-packages/numpy/lib/npyio.py”,第 928 行,在 loadtxt items = [conv(val) for (conv, val) in zip(转换器、值)]
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)
或者,将目录名称更改为不含空格,例如猫头鹰石
。
或者,您可以将文件和脚本移动到同一目录中,并删除所有路径信息,以证明一切正常,实际上首先找到了该文件。从错误输出中可以清楚地看出,您没有越过这条线,因此首先将注意力集中在那里。
现在超越了逃逸空间的可能性,让我们集中精力讨论文件中的内容。您的图像和发布的数据未使用 ,
作为分隔符。修复该问题并用作数据
-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
,因为这不能解决太多值无法解压
问题)我可以通过获取数组
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]
的表示法是用所有行和第 0 列的值对数组 dv
进行子集化,一般格式为 数组[行,列]
。这段代码给了我们
关于python - 在 ubuntu 中使用 Python 中的 matplotlib 从 csv 文件绘制 2D 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33154268/