У меня есть список двумерных точек, представленных в массиве стилей numpy:
lines = np.array([
[[1,1], [2,3]], # line 1 (x,y) -> (x,y)
[[-1,1], [-2,2]], # line 2 (x,y) -> (x,y)
[[1,-1], [2,-7]] # line 3 (x,y) -> (x,y)
])
Я хотел бы построить эти линии с помощью matplotlib в самой простой форме.
Однако большинство методов matplotlib ожидают, что точки будут представлены покомпонентно, например ( [x1, x2, x3, ...], [y1, y2, y3, ...]) вместо точечного.
Мне удалось получить срезы правильно для колчана график типа с векторами:
x = lines[:,0,0]
y = lines[:,0,1]
u = lines[:,1,0]
v = lines[:,1,1]
# quiver([X, Y], U, V, [C], **kwargs)
plt.quiver(x, y, u, v, color=['r','b','g'], scale=1, scale_units='xy', angles='xy')
plt.xticks(np.arange(-10, 10, 1))
plt.yticks(np.arange(-10, 10, 1))
plt.grid()
plt.show()
Но у меня сложилось впечатление, что quiver не совсем подходит для моего варианта использования. Особенно мне потребовалось немало времени, чтобы разобраться с аргументами Scale, Scale_units и angulars. Без них векторы отображались «неправильно».
Я бы предпочел использовать более простой график, в этой подписи
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
который для каждой отображаемой линии ожидает две координаты x, за которыми следуют координаты y.
Итак, для строк выше нам нужно
rearranged = [ [1,2],[1,3], [-1,-2],[1,2], [1,2],[-1,-7] ]
# ^line1 ^line2 ^line3
Если я добавлю их в вызов сюжета статически, это именно то, что мне нужно.
Вопрос в том, как я могу нарезать или изменить исходный массив строк?
Все, что у меня есть, это
lines[:,[0,0],[0,1]]
но это дает мне только координаты x каждой строки:
[[ 1 1]
[-1 1]
[ 1 -1]]
Подробнее здесь: https://stackoverflow.com/questions/790 ... matplotlib
Срез списка 2D-точек для построения графиков с помощью matplotlib ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение