Python 获取值错误:';顶点';如果是Nx2,则必须是形状为Nx2的二维列表或数组?
我正在尝试使用节点坐标和连接性绘制网格,如下所述: 我有一个存储在numpy数组中的节点坐标列表(x、y和z坐标) 我将x和y定义为:Python 获取值错误:';顶点';如果是Nx2,则必须是形状为Nx2的二维列表或数组?,python,matplotlib,mesh,Python,Matplotlib,Mesh,我正在尝试使用节点坐标和连接性绘制网格,如下所述: 我有一个存储在numpy数组中的节点坐标列表(x、y和z坐标) 我将x和y定义为: x = coords[:,0] y = coords[:,1] 我有一个numpy数组中的节点连接性连接性,它有连接在一起的坐标的id号 然后,按照他们的示例,执行以下操作: xy = np.c_[x,y] verts= xy[connectivity] pc = matplotlib.collections.PolyCollection(verts) 我
x = coords[:,0]
y = coords[:,1]
我有一个numpy数组中的节点连接性连接性
,它有连接在一起的坐标的id号
然后,按照他们的示例,执行以下操作:
xy = np.c_[x,y]
verts= xy[connectivity]
pc = matplotlib.collections.PolyCollection(verts)
我得到了这个错误:
File "C:\Users\deden\AppData\Local\Continuum\anaconda3\envs\dhi\lib\site-packages\matplotlib\path.py", line 130, in __init__
"'vertices' must be a 2D list or array with shape Nx2")
ValueError: 'vertices' must be a 2D list or array with shape Nx2
检查:
xy。形状[1]
为2和
xy.ndim
2
回溯文件中的第130行是:
vertices = _to_unmasked_float_array(vertices)
if vertices.ndim != 2 or vertices.shape[1] != 2:
raise ValueError(
"'vertices' must be a 2D list or array with shape Nx2")
和\u to_unmasked_float_数组(顶点)
调用:
def _to_unmasked_float_array(x):
"""
Convert a sequence to a float array; if input was a masked array, masked
values are converted to nans.
"""
if hasattr(x, 'mask'):
return np.ma.asarray(x, float).filled(np.nan)
else:
return np.asarray(x, float)
如果verts.shape[1]
和verts.ndim
=2,我不明白为什么会收到此错误消息
同样np.asarray(垂直,浮动)。形状[1]
和np.asarray(垂直,浮动)。ndim
也是2
到底发生了什么事?我错过什么了吗?非常感谢任何人的帮助
还有
verts.shape
返回
(181660, 2)
由于要绘制集合,因此希望
verts
是每个多边形的顶点列表。更严格地说
verts
是一个(verts0,verts1,…)
序列,其中verts\u i
是一个顶点的xy元组序列,或一个形状的等效numpy数组(nv,2)
因此,如果集合只有一个多边形,它仍然需要是一个包含单个条目的列表。就你而言
PolyCollection([verts])
谢谢,这种方法很有效-我有一个每个网格元素的节点数数组,所以基本上只是根据这些计数分割坐标,所以我的verts对象是一个数组列表,其中每个数组都是Nx2,每个多边形/元素都有顶点…然后只需执行
PolyCollection(verts)
成功了。你知道我如何用另一个数组给这些多边形的面上色吗?我得到了每个多边形的平均z值(基于相关节点的z值),并尝试将cmap=matplotlib.cm.jet
添加到PolyCollection
调用中,然后执行pc.set_数组(zs)
(zs是长度为我的顶点列表的np.array)但是当我试图绘制它时,我得到了一个错误:AttributeError:'list'对象没有属性“ndim”
…如果你有任何想法,请告诉我我可以编辑OP以获得完整的回溯听起来像是另一个问题。所以你可以问一个关于这个问题的新问题。谢谢你在OP上的帮助,我终于想出了下一个问题