/ / python wiele linii jako jedna grupa - python, matplotlib, plot

python wiele linii jako jedna grupa - python, matplotlib, plot

Jeśli wykreślę różne linie rozłączne jednym wywołaniem w następujący sposób ...

>>> import matplotlib.pyplot as plt
>>> x = [random.randint(0,9) for i in range(10)]
>>> y = [random.randint(0,9) for i in range(10)]
>>> data = []
>>> for i in range(0,10,2):
...     data.append((x[i], x[i+1]))
...     data.append((y[i], y[i+1]))
...
>>> print(data)
[(6, 4), (4, 3), (6, 5), (0, 4), (0, 0), (2, 2), (2, 0), (6, 5), (2, 5), (3, 6)]
>>> plt.plot(*data)
[<matplotlib.lines.Line2D object at 0x0000022A20046E48>, <matplotlib.lines.Line2D object at 0x0000022A2004D048>, <matplotlib.lines.Line2D object at 0x0000022A2004D9B0>, <matplotlib.lines.Line2D object at 0x0000022A20053208>, <matplotlib.lines.Line2D object at 0x0000022A20053A20>]
>>> plt.show()

wprowadź opis obrazu tutaj

Nie mogę sobie wyobrazić, jak uzyskać python / matplotlib, aby zobaczyć go jako pojedynczą fabułę, tego samego koloru, szerokości linii, ect i tego samego wpisu legendy ...

z góry dziękuję

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli nie masz nic przeciwko, że wszystkie zostaną połączone w jeden wiersz, powinieneś po prostu użyć plt.plot(x,y). Myślę jednak, że chciałbyś zachować je jako osobne linie. W tym celu możesz określić argumenty stylu dla swojego wykresu, a następnie użyć kodu z Zatrzymaj powtarzające się etykiety w legendzie aby zapobiec wielu wpisom legendy.

import matplotlib.pyplot as plt
import numpy as np
from collections import OrderedDict

x = [np.random.randint(0,9) for i in range(10)]
y = [np.random.randint(0,9) for i in range(10)]
data = []
for i in range(0,10,2):
data.append((x[i], x[i+1]))
data.append((y[i], y[i+1]))

#Plot all with same style and label.
plt.plot(*data,linestyle="-",color="blue",label="LABEL")

#Single Legend Label
handles, labels = plt.gca().get_legend_handles_labels()
by_label = OrderedDict(zip(labels, handles))
plt.legend(by_label.values(), by_label.keys())

#Show Plot
plt.show()

Daje Ci
wprowadź opis obrazu tutaj


0 dla odpowiedzi nr 2

Co powiesz na to?

import numpy as np
d = np.asarray(data)
plt.plot(d[:,0],d[:,1])
plt.show()