/ / python líneas múltiples como un grupo - python, matplotlib, plot

python líneas múltiples como un grupo: python, matplotlib, plot

Si trazo varias líneas separadas con una llamada de la siguiente manera ...

>>> 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()

enter image description here

No puedo averiguar cómo obtener python / matplotlib para verlo como un solo gráfico, del mismo color, ancho de línea, ect y la misma entrada de leyenda ...

gracias de antemano

Respuestas

1 para la respuesta № 1

Si no te importa que todos ellos se fusionen en una sola línea, deberías usar plt.plot(x,y). Sin embargo, creo que te gustaría mantenerlos como líneas separadas. Para esto, puede especificar los argumentos de estilo para su argumento de trama y luego usar el código de Detener matplotlib repitiendo etiquetas en leyenda para evitar múltiples entradas de leyenda.

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()

Dandote
enter image description here


0 para la respuesta № 2

¿Qué tal esto?

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