Python:绘制从x轴上的点(X1,0)到点(X2,Y2)的线的问题

时间:2019-04-14 19:02:42

标签: python python-3.x numpy matplotlib plot

我在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 个答案:

答案 0 :(得分:1)

您正在每个循环上创建一个图形。您可以先设置图形,然后在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()