gpt4 book ai didi

python - 在 ubuntu 中使用 Python 中的 matplotlib 从 csv 文件绘制 2D 图形

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:58 25 4
gpt4 key购买 nike

我必须使用 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 进行子集化,一般格式为 数组[行,列]。这段代码给了我们

Chemical Presence Plot

关于python - 在 ubuntu 中使用 Python 中的 matplotlib 从 csv 文件绘制 2D 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33154268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com