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

标签 python python-2.7 csv matplotlib

我必须使用 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/

相关文章:

json - Grails-渲染的Json文件太大,无法进行客户端操作

python - 是否可以在 Python 列表理解中编写多个语句?

python - 如何修改 STDOUT?

python - TensorFlow 传递梯度不变

python - 从函数内部的 "print"获取输出

python - 脚本目录是 Python 中的反模式吗?如果是这样,什么是正确的导入方式?

python - 引用 CSV 标题字符串来调整列格式

python - 嵌套循环属性错误: __exit__ (Selenium script) when opening file

python - 在 Ubuntu 中删除 1 个版本的 Python

python - 以不同的方式打印 CSV