Python: проблема с построением графика от одной точки Y до множества точек на оси X - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть одна точка на оси Y и много на оси X, и я хочу провести прямые линии от этой одной точки Y до каждого X (форма треугольника).

plt.plot([P], [TR], 'k')
plt.xlabel('CENTERLINE')
plt.ylabel('RADIUS')
plt.show()

Где TR - моя единственная точка, объявленная ранее, а P - точки с плавающей запятой (сначала я создаю P = np.zeros((n+1)), а затем, используя цикл for, я помещаю туда значения).

plt.show() возвращает пустой график (без какого-либо графика)

Вот пример того, как это должно выглядеть

Ответы [ 2 ]

2 голосов
/ 13 апреля 2019

При обработке нескольких строк одновременно может быть полезно использовать объект LineCollection:

import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

import numpy as np

pos_fixed = np.array([0, 35])
lines = np.array([[[pos, 0], pos_fixed] for pos in np.arange(0, 50, 2)])
line_coll = LineCollection(lines)

fig, ax = plt.subplots()
ax.add_collection(line_coll)

plt.xlim([0, lines[:,:,0].max()])
plt.ylim([0, lines[:,:,1].max()])

Таким образом, вы можете легче обрабатывать свой сюжет (и быстрее, если у вас много линий).

Результат:

enter image description here

1 голос
/ 13 апреля 2019

Эти линии не являются смежными, поэтому вам нужно будет строить их отдельно. Вы можете сделать это одной строкой, которая идет вверх и вниз (и вверх и вниз, вверх и вниз ...), но я думаю, что это имеет больше смысла как отдельные строки. Рассмотрим:

import matplotlib.pyplot as plt
originpoint = (0, 5)
yfloor = 0
xvalues = [0, 1, 2, 3, 4]
for x in xvalues:
    plt.plot((originpoint[0], x), (originpoint[1], yfloor))
plt.show()

the plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...