python错误“ValueError:无效顶点数组”

2024-04-25 18:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行下面的代码,得到了下面的错误。当我打印cov变量时,其中的数字用单引号括起来。我想这就是问题所在?当我试着画x和y时,效果很好。我是一个新的python用户。有什么建议吗?谢谢!在

#!/bin/python

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
from sys import argv
#from numpy import array

#array = numpy.float64(array)

script, filename = argv

file = open(filename)

pos = []
cov = []

for line in file:
    if (line.split()[0])=='1':
        ch = int(line.split()[0])
        #adjpos = int(line.split()[1])
        pos.append(line.split()[1])
        cov.append(line.split()[2])

file.close()

print cov

x = [0, 1, 2, 3]
y = [5, 10, 5, 5]

print x
print y

fig = plt.figure(figsize=(16,3),edgecolor='w')
plt.scatter(pos,cov,marker='.',s=1)
plt.show()

Traceback (most recent call last):
  File "/Users/eflannery/Dropbox/plotSamFlags.py", line 37, in <module>
    plt.scatter(pos,cov,marker='.',s=1)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/pyplot.py", line 2557, in scatter
    ret = ax.scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, faceted, verts, **kwargs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/axes.py", line 5876, in scatter
    self.add_collection(collection)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/axes.py", line 1445, in add_collection
    self.update_datalim(collection.get_datalim(self.transData))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/collections.py", line 160, in get_datalim
    offsets = transOffset.transform_non_affine(offsets)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/transforms.py", line 1925, in transform_non_affine
    self._a.transform(points))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/transforms.py", line 1415, in transform
    return affine_transform(points, mtx)
ValueError: Invalid vertices array.

Tags: inpyimportextrasmatplotlibliblinelibrary
2条回答

如果数字周围有引号,这意味着它们是字符串,这很可能导致问题。在

在你的代码里

         pos.append(line.split()[1])
         cov.append(line.split()[2])

这将把数字作为字符串附加到pos和cov列表中,因此您应该按照上面所做的操作并将它们转换为数字。在

^{pr2}$

这些数字需要转换成matplotlib可以使用的类型;现在它只生成一个字符串列表,因为split()返回一个字符串列表。您可以通过调用int()(或者float(),如果数字不全是整数)来在读取文件时转换字符串,这已经在分配给ch中完成了:

for line in file:
    if (line.split()[0])=='1':
        ch = int(line.split()[0])
        pos.append(int(line.split()[1]))
        cov.append(int(line.split()[2]))

相关问题 更多 >