Tworzenie listy współrzędnych (x, y) w Pythonie matplotlib

Mam listę par (a, b), które chciałbym narysować matplotlib w Pythonie jako rzeczywiste współrzędne x-y. Obecnie tworzy dwa wykresy, gdzie indeks listy podaje współrzędną x, a wartości y pierwszego Wykresu to a S w parach, a wartości Y drugiego Wykresu to b s w parach.

Dla wyjaśnienia, moje dane wyglądają tak: li = [(a,b), (c,d), ... , (t, u)] Chcę zrobić jednolinijkowy, który nazywa plt.plot() niepoprawnym. Gdybym nie wymagał jednośladu mógłbym trywialnie zrobić:

xs = [x[0] for x in li]
ys = [x[1] for x in li]
plt.plot(xs, ys)
  • Jak mogę zmusić matplotlib do wykreślenia tych par jako współrzędnych x-y?

Dzięki za pomoc!

Author: CodeKingPlusPlus, 2014-02-03

3 answers

Zgodnie z Ten przykład :

import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)

plt.scatter(x, y)
plt.show()

Wyprodukuje:

Tutaj wpisz opis obrazka

Aby rozpakować dane z par na listy użyj zip:

x, y = zip(*li)

Więc jednolinijkowy:

plt.scatter(*zip(*li))
 105
Author: sashkello,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-03 03:49:06

Jeśli masz tablicę numpy możesz to zrobić:

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)
 16
Author: Zweedeend,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-15 08:33:27

Jeśli chcesz narysować pojedynczą linię łączącą wszystkie punkty na liście

plt . plot ( li [ : ] )

plt . show ( )

To wykreśli linię łączącą wszystkie pary na liście jako punkty na płaszczyźnie kartezjańskiej od początku listy do końca. Mam nadzieję, że tego właśnie chciałaś.

 2
Author: Shubham Rana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-10 18:01:04