Python: проблема с построением линий от точек (X1,0) по оси x к точкам (X2, Y2) - PullRequest
1 голос
/ 14 апреля 2019

У меня есть точки на оси X, и я хочу сделать прямую линию от каждой из них до другой точки (X2, Y2).

Этот код предназначен для синих линий от Y = 35 до точек X (P) и это работает

pos_fixed = np.array([0, TR])
lines = np.array([[[pos, 0], pos_fixed] for pos in P])
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()])
plt.xlabel('Oś')
plt.ylabel('Promień')
plt.show()

А вот код, который должен делать то, что я описываю в начале:


for s in range(len(P)-1):
    position = np.array([P[s], 0])
    lines = np.array([[position, [x2[s], y2[s]]]])
    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()])
plt.show()

Мои ожидания на прикрепленной картинке (у меня красный и фиолетовыйочки, и я не знаю, как сделать зеленые линии).

Этот код (второй) отображает десятки диаграмм (каждая зеленая линия отдельно) и не включает (я хочу) предыдущий код / ​​предыдущий график.

Picture

1 Ответ

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

вы создаете фигуру в каждом цикле.Вы можете сначала настроить свою фигуру, а затем в цикле for добавить линии.переставить код следующим образом:

# create the figure
fig, ax = plt.subplots()
plt.xlim([0, lines[:,:,0].max()])
plt.ylim([0, lines[:,:,1].max()])

# lines from the first part of the question
pos_fixed = np.array([0, TR])
lines = np.array([[[pos, 0], pos_fixed] for pos in P])
line_coll = LineCollection(lines,colors='blue')
ax.add_collection(line_coll)
plt.xlabel('Oś')
plt.ylabel('Promień')


# lines for the second part
for s in range(len(P)-1):
    position = np.array([P[s], 0])
    lines = np.array([[position, [x2[s], y2[s]]]])
    line_coll = LineCollection(lines,colors='green')
    ax.add_collection(line_coll)

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