Mam listę par, (a, b)
które chciałbym narysować matplotlib
w Pythonie jako rzeczywiste współrzędne xy. 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 na drugim wykresie to b
s w parach.
Aby wyjaśnić, moje dane wyglądają następująco: li = [(a,b), (c,d), ... , (t, u)]
chcę zrobić jednolinijkowy, który po prostu nazywa plt.plot()
niepoprawne. Gdybym nie potrzebował jednej linijki, mógłbym w trywialny sposób 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 xy?
python
matplotlib
plot
coordinates
CodeKingPlusPlus
źródło
źródło
plt.scatter( * xy.T )
działa: krótkie i niejasne dlax, y = xy.T; plt.scatter( x, y )
x, y = zip(*li)
to naprawdę elegancki kod w Pythonie! robiłem bardziej proste dwa wiersze kodu z kompresją listy w każdym wierszu (jak w oryginalnym pytaniu)plt.scatter
przykład ma wspólnego z pytaniem.Jeśli masz tablicę numpy, możesz to zrobić:
źródło
np.array
ofdata=np.array([[x1,y1],[x2,y2],etc.])
i usingplt.plot(data)
. Zawsze będę musiał podawać dwie tablice zamiast tablic tablic?plt.plot(*data.T)
który robi to samo, co powyżej, ale pomija krok pośredni.Jeśli chcesz narysować pojedynczą linię łączącą wszystkie punkty na liście
Spowoduje to wykreślenie linii łączącej 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łeś.
źródło
scatter()
.