Trazar con menos marcadores que los puntos de datos (o una mejor manera de trazar CDF?) [Matplotlib, o ayuda general de trazado

StackOverflow https://stackoverflow.com/questions/2040306

Pregunta

Estoy trazando funciones de distribución acumulativa, con una gran cantidad de puntos de datos. Estoy tramando algunas líneas en la misma trama, que se identifican con marcadores, ya que se imprimirán en blanco y negro. Lo que me gustaría son marcadores espaciados uniformemente en la X-Dimension. Lo que estoy obteniendo es un marcador por punto de datos (y dado el número de puntos, todos se superponen)

No estoy seguro de si es mi comprensión de cómo trazar bien, o simplemente una falta de comprensión de Matplotlib. No puedo encontrar una configuración de 'frecuencia de marcador'.

Una solución fácil para una línea sería tomar cada valor en n'th de la línea, y usarla como una línea separada con linestyle = '', pero me gustaría que los marcadores se alineen verticalmente, y las diferentes matrices X tienen diferentes longitudes.

# in reality, many thousands of values
x_example = [ 567, 460, 66, 1034, 275, 26, 628, 99, 287, 157, 705, 421, 1093, \ 
     139, 204, 14, 240, 179, 94, 139, 645, 670, 47, 520, 891, 450, 56, 964,   \
     1728, 99, 277, 356, 1628, 745, 364, 88, 112, 810, 816, 523, 401, 89,     \ 
     278, 917, 370, 53, 39, 90, 853, 356 ] 
x = sort(x_example)
y = linspace(0,1,len(x))

ax = subplot(1,1,1)
plots[w] = ax.plot(x,y, marker='o')
¿Fue útil?

Solución

Tu puedes hacer plot(x,y,marker='o',markevery=5) Para marcar cada quinto punto, pero no creo que haya ningún soporte incorporado para establecer marcas a intervalos uniformes. Puede decidir sobre las ubicaciones X donde desee las marcas, use, por ejemplo, numpy.searchsorted Para encontrar en qué puntos de datos se encuentran las ubicaciones y luego interpolar entre los puntos vecinos para encontrar las coordenadas Y.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top