构建Matplotlib的LineCollection的线段列表

问题描述 投票:0回答:2

我想使用matplotlib.collections.LineCollection对象,从两个Numpy数组xy开始

>>> from matplotlib.collections import LineCollection
>>> from numpy import array, linspace

>>> x = linspace(0, 2, 5)
>>> y = 1-(1-x)**2

实例化LineCollection的唯一条件是由segments列表组成的数据结构,每个segmentpoints的列表,每个point] >作为元组。

使用我可以使用的两个向量xy

>>> segments = np.array(list(zip( zip(x, x[1:]), zip(y, y[1:])))) .transpose((0,2,1))
>>> print(segments)
[[[0.   0.  ]
  [0.5  0.75]]

 [[0.5  0.75]
  [1.   1.  ]]

 [[1.   1.  ]
  [1.5  0.75]]

 [[1.5  0.75]
  [2.   0.  ]]]

我的问题。是否可以以不太隐秘的方式构造segments

我想使用matplotlib.collections.LineCollection对象,从两个Numpy数组x和y开始>>>从matplotlib.collections导入LineCollection >>>从numpy import ...>]

numpy matplotlib
2个回答
0
投票
一种可能性如下:

xy = np.array([x, y]) segments = np.array([[xy[:, i], xy[:, i+1]] for i in range(xy.shape[1]-1)])


0
投票
[我总是喜欢将片段视为3D数组,第一个轴为线段,第二个为沿线段的坐标,第三个为每个线段的x和y坐标。
© www.soinside.com 2019 - 2024. All rights reserved.