Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

43

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi biết có một câu hỏi rất giống nhau, nhưng tôi không thể trích xuất thông tin tôi cần từ nó.

âm mưu các dòng theo cặp

Tôi có 4 điểm trong mặt phẳng

import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
2:
import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
3 và
import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
4

x=[-1 ,0.5 ,1,-0.5]
y=[ 0.5,  1, -0.5, -1]

Bây giờ, tôi có thể vẽ bốn điểm bằng cách làm:

import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()

Nhưng, ngoài bốn điểm, tôi muốn có 2 dòng:

1) Một kết nối

import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
5 với
import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
6 và 2) cái thứ hai kết nối
import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
7 với
import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
8.

Đây là một ví dụ đồ chơi đơn giản. Trong trường hợp thực sự tôi có 2 điểm trong máy bay.

Làm cách nào để có được đầu ra mong muốn: cho các điểm với hai dòng kết nối?

Cảm ơn bạn.

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

Borges 8 bit

9.25326 Huy hiệu vàng87 Huy hiệu bạc172 Huy hiệu Đồng26 gold badges87 silver badges172 bronze badges

hỏi ngày 12 tháng 2 năm 2016 lúc 13:08Feb 12, 2016 at 13:08

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

Tôi nghĩ rằng bạn sẽ cần các dòng riêng cho từng phân đoạn:

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()

(Nhập

import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
9 chỉ là thiết lập một số dữ liệu mẫu 2x10 ngẫu nhiên)

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

Đã trả lời ngày 12 tháng 2 năm 2016 lúc 13:23Feb 12, 2016 at 13:23

xnxxnxxnx

23.6K9 Huy hiệu vàng65 Huy hiệu bạc106 Huy hiệu Đồng9 gold badges65 silver badges106 bronze badges

2

Bạn chỉ có thể vượt qua danh sách hai điểm bạn muốn kết nối với

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
0. Để làm cho điều này dễ dàng mở rộng đến bao nhiêu điểm tùy thích, bạn có thể xác định một chức năng như vậy.

import matplotlib.pyplot as plt

x=[-1 ,0.5 ,1,-0.5]
y=[ 0.5,  1, -0.5, -1]

plt.plot(x,y, 'ro')

def connectpoints(x,y,p1,p2):
    x1, x2 = x[p1], x[p2]
    y1, y2 = y[p1], y[p2]
    plt.plot([x1,x2],[y1,y2],'k-')

connectpoints(x,y,0,1)
connectpoints(x,y,2,3)

plt.axis('equal')
plt.show()

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

Lưu ý, chức năng đó là một hàm chung có thể kết nối bất kỳ hai điểm nào trong danh sách của bạn với nhau.

Để mở rộng điều này lên 2n điểm, giả sử bạn luôn kết nối điểm

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
1 với điểm
import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
2, chúng tôi chỉ có thể đặt nó vào một vòng lặp:

import numpy as np
for i in np.arange(0,len(x),2):
    connectpoints(x,y,i,i+1)

Trong trường hợp đó luôn luôn kết nối điểm

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
1 với điểm
import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
2, bạn có thể chỉ cần làm:

for i in np.arange(0,len(x),2):
    plt.plot(x[i:i+2],y[i:i+2],'k-')

Đã trả lời ngày 12 tháng 2 năm 2016 lúc 13:21Feb 12, 2016 at 13:21

tmdavisontmdavisontmdavison

60.2K12 Huy hiệu vàng169 Huy hiệu bạc153 Huy hiệu đồng12 gold badges169 silver badges153 bronze badges

1

Tôi nhận ra câu hỏi này đã được hỏi và trả lời từ lâu, nhưng câu trả lời không đưa ra những gì tôi cảm thấy là giải pháp đơn giản nhất. Hầu như luôn luôn là một ý tưởng tốt để tránh các vòng lặp bất cứ khi nào có thể và

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
5 của Matplotlib có khả năng vẽ nhiều dòng với một lệnh. Nếu
import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
6 và
import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
7 là mảng, thì
import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
5 vẽ một dòng cho mỗi cột.

Trong trường hợp của bạn, bạn có thể làm như sau:

x=np.array([-1 ,0.5 ,1,-0.5])
xx = np.vstack([x[[0,2]],x[[1,3]]])
y=np.array([ 0.5,  1, -0.5, -1])
yy = np.vstack([y[[0,2]],y[[1,3]]])
plt.plot(xx,yy, '-o')

Có một danh sách dài của X và Y, và muốn kết nối các cặp liền kề?

xx = np.vstack([x[0::2],x[1::2]])
yy = np.vstack([y[0::2],y[1::2]])

Muốn có một màu (khác nhau) được chỉ định cho các dấu chấm và các dòng?

plt.plot(xx,yy, '-ok', mfc='C1', mec='C1')

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

Đã trả lời ngày 28 tháng 5 năm 2020 lúc 20:49May 28, 2020 at 20:49

JinjerjohnjinjerjohnJinjerJohn

3532 Huy hiệu bạc6 Huy hiệu Đồng2 silver badges6 bronze badges

1

Sử dụng hàm matplotlib.arrow () và đặt các tham số Head_length và head_width thành 0 để không nhận được "đầu mũi tên". Các kết nối giữa các điểm khác nhau có thể được tính toán bằng cách sử dụng bổ sung vectơ với: a = [1,2], b = [3,4]-> Kết nối giữa A và B là B-A = [2,2]. Vẽ vectơ này bắt đầu từ đầu A kết thúc ở đầu B.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use('fivethirtyeight')


A = np.array([[10,8],[1,2],[7,5],[3,5],[7,6],[8,7],[9,9],[4,5],[6,5],[6,8]])


fig = plt.figure(figsize=(10,10))
ax0 = fig.add_subplot(212)

ax0.scatter(A[:,0],A[:,1])


ax0.arrow(A[0][0],A[0][1],A[1][0]-A[0][0],A[1][1]-A[0][1],width=0.02,color='red',head_length=0.0,head_width=0.0)
ax0.arrow(A[2][0],A[2][1],A[9][0]-A[2][0],A[9][1]-A[2][1],width=0.02,color='red',head_length=0.0,head_width=0.0)
ax0.arrow(A[4][0],A[4][1],A[6][0]-A[4][0],A[6][1]-A[4][1],width=0.02,color='red',head_length=0.0,head_width=0.0)


plt.show()

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

Đã trả lời ngày 24 tháng 5 năm 2018 lúc 12:55May 24, 2018 at 12:55

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

2Obe2Obe2Obe

3.3325 huy hiệu vàng28 Huy hiệu bạc53 Huy hiệu đồng5 gold badges28 silver badges53 bronze badges

Với mã bên dưới, bạn có thể tạo nhiều dòng bằng cách kết nối các điểm nhờ tọa độ của chúng:

import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
0

Kết quả

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

đã trả lời vào ngày 30 tháng 1 lúc 0:02Jan 30 at 0:02

Hướng dẫn draw line between 2 points python - vẽ đường thẳng giữa 2 điểm python

Julien Jmjulien JMJulien Jm

2.0902 Huy hiệu vàng20 Huy hiệu bạc26 Huy hiệu đồng2 gold badges20 silver badges26 bronze badges

Tôi thích

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random(size=(2,10))

for i in range(0, len(x), 2):
    plt.plot(x[i:i+2], y[i:i+2], 'ro-')

plt.show()
9 trong matplotlib. Xem mã tối thiểu sau:

import matplotlib.pyplot as plt

plt.plot(x,y, 'ro')
plt.axis('equal')
plt.show()
1

Một ví dụ chi tiết hơn có thể được tìm thấy ở đây.

Đã trả lời ngày 11 tháng 9 năm 2021 lúc 1:48Sep 11, 2021 at 1:48

JiadongjiadongJiadong

1.52213 huy hiệu bạc32 huy hiệu đồng13 silver badges32 bronze badges

Làm thế nào để bạn vẽ một đường giữa hai điểm?

Bước 1: Tìm độ dốc (hoặc độ dốc) từ 2 điểm.Độ dốc (hoặc độ dốc) của dòng này là gì?Chúng tôi biết hai điểm: ....
Bước 2: "Công thức độ dốc điểm" bây giờ đặt độ dốc đó và một điểm vào "công thức độ dốc điểm" ....
Bước 3: Đơn giản hóa.Bắt đầu với: y - 3 = 14 (x - 2).

Làm thế nào để bạn vẽ một dòng trong Python?

line () vẽ một ranh giới giữa các tọa độ trong danh sách XY.Các tham số: XY-Trình tự của 2-TUMPLE như [(x, y), (x, y), trên] hoặc các giá trị số như [x, y, x, y, y,]. Draws a line between the coordinates in the xy list. Parameters: xy – Sequence of either 2-tuples like [(x, y), (x, y), …] or numeric values like [x, y, x, y, …].

Làm cách nào để vẽ một dòng trong matplotlib?

Có hai cách chúng ta có thể vẽ các dòng, sử dụng các hàm vlines () hoặc axvline () của thể hiện pyplot.Đương nhiên, bạn cũng có thể gọi các phương thức này trên đối tượng trục.using the vlines() or axvline() functions of the PyPlot instance. Naturally, you can also call these methods on the Axes object.

Làm thế nào để bạn vẽ một đường ngang trong Python?

Hàm axhline () trong mô -đun pyplot của thư viện matplotlib được sử dụng để thêm một đường ngang trên trục.Tham số: Y: Vị trí trên trục y Để vẽ đường thẳng, nó chấp nhận số nguyên.. Parameters: y: Position on Y axis to plot the line, It accepts integers.