import numpy as np import matplotlib.pyplot as plt array = np.array([[1,2,3,4,5,6],[10,20,30,40,50,60],[3,4,5,6,7,8],[100,200,300,400,500,600]]) def plot(list): fig = plt.figure() ax = fig.add_subplot(111) for a,i in enumerate(list.T): ax.scatter(i[0],i[1],c='red') # This is plotted ax.plot(i[2],i[3],'g--') # THIS IS NOT BEING PLOTTED !!!! fig.show() plot(array)
Ahora, necesito llamar a plot
varias veces usando diferentes listas de array
. Así que mi bucle for
no puede ser eliminado. ¿Hay alguna otra manera de trazar una línea de puntos aparte de llamar a plt.plot
en plt.plot
lugar?
Esta es la ttwig que obtengo:
Como puede ver, no estoy obteniendo el plt.plot(i[2],i[3],'g--')
. Por qué esto es tan ?
Pero cuando imprimes los valores usando el mismo bucle for:
In [21]: for a,i in enumerate(array.T): ...: print i[2],i[3] ...: 3 100 4 200 5 300 6 400 7 500 8 600
Los valores están perfectamente impresos. Sin embargo, no se trazan.
Retire el bucle for:
ax.scatter(array[0],array[1],c='red') ax.plot(array[0],array[1],'g--')
El problema con su código es que usted itera sobre filas, lo cual está bien para trazar puntos individuales ( ax.scatter
), pero no para conectar puntos simples ( ax.plot
con opción '--'
): en cada fila solo traza el línea entre ese punto y sí mismo, que obviamente no se muestra en el gráfico.