programing

matplotlib에서 (x, y) 좌표 리스트 표시

lastcode 2023. 5. 22. 21:07
반응형

matplotlib에서 (x, y) 좌표 리스트 표시

나는 짝의 목록을 가지고 있습니다.(a, b)제가 계획하고 싶은 것은matplotlib파이썬에서 실제 x-y 좌표입니다.현재 목록의 인덱스가 x 좌표를 제공하는 두 개의 그래프를 만들고 있으며, 첫 번째 그림의 y 값은a쌍의 s와 두 번째 그림의 y 값은b쌍쌍이

제 데이터는 다음과 같습니다.li = [(a,b), (c,d), ... , (t, u)]전화 한 통만 걸어보고 싶어요plt.plot()원라이너가 필요하지 않다면 다음과 같은 작업을 수행할 수 있습니다.

xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)

이 쌍을 x-y 좌표로 플롯하기 위해 matplotlib을 어떻게 얻을 수 있습니까?


샘플 데이터

# sample data
li = list(zip(range(1, 14), range(14, 27)))

li → [(1, 14), (2, 15), (3, 16), (4, 17), (5, 18), (6, 19), (7, 20), (8, 21), (9, 22), (10, 23), (11, 24), (12, 25), (13, 26)]

잘못된 그림

plt.plot(li)
plt.title('Incorrect Plot:\nEach index of the tuple plotted as separate lines')

여기에 이미지 설명 입력

원하는 그림

이렇게 하면 올바른 플롯이 생성되지만, 많은 줄의 코드가 압축 풀기에 사용됩니다.li여러 개의 목록 이해가 아니라 코드 한 줄로 압축을 풀고 플롯을 해야 합니다.

xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
plt.title('Correct Plot:\nBut uses to many lines to unpack li')

여기에 이미지 설명 입력

정해진li질문:

li = list(zip(range(1, 14), range(14, 27)))

쌍의 데이터를 목록으로 압축 해제하려면 다음을 사용합니다.

x, y = zip(*li)

x → (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
y → (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)

원라이너는 압축 풀기 연산자(*)를 사용하여 다음을 위한 튜플 목록을 풉니다.zip그리고 포장을 풉니다.zip개체를 플롯 API로 이동합니다.

plt.scatter(*zip(*li))

여기에 이미지 설명 입력

plt.plot(*zip(*li))

여기에 이미지 설명 입력

numpy 배열이 있는 경우 다음을 수행할 수 있습니다.

import numpy as np
from matplotlib import pyplot as plt

data = np.array([
    [1, 2],
    [2, 3],
    [3, 6],
])
x, y = data.T
plt.scatter(x,y)
plt.show()

리스트의 모든 점을 연결하는 단일 선을 표시하려는 경우

plt.plot(li[:])

plt.show()

그러면 목록의 모든 쌍을 연결하는 선이 목록의 시작부터 끝까지 데카르트 평면에 점으로 표시됩니다.이것이 당신이 원했던 것이기를 바랍니다.

언급URL : https://stackoverflow.com/questions/21519203/plotting-a-list-of-x-y-coordinates-in-matplotlib

반응형