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()
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 № 1Si 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()
0 para la respuesta № 2
¿Qué tal esto?
import numpy as np
d = np.asarray(data)
plt.plot(d[:,0],d[:,1])
plt.show()