Traccia con meno marcatori rispetto ai punti dati (o un modo migliore per tracciare i CDF?) [Matplotlib, o aiuto generale di trama

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

Domanda

Sto pianificando funzioni di distribuzione cumulativa, con un gran numero di punti dati. Sto pianificando alcune righe sulla stessa trama, che sono identificate con marcatori in quanto verrà stampato in bianco e nero. Quello che vorrei sono marcatori uniformemente distanziati nella dimensione X. Quello che sto ottenendo è un marcatore per punto dati (e dato il numero di punti, si sovrappongono)

Non sono sicuro che sia la mia comprensione di come tracciare bene o solo una mancanza di comprensione di Matplotlib. Non riesco a trovare un'impostazione di "frequenza marcatore".

Una soluzione semplice per una riga sarebbe quella di prendere ogni valore n'th dalla linea e usarlo come linea separata con linestyle = '', ma vorrei che i marcatori fossero allineati verticalmente e le diverse array hanno diverse lunghezze.

# 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')
È stato utile?

Soluzione

Tu puoi fare plot(x,y,marker='o',markevery=5) Segnare ogni quinto punto, ma non credo che ci sia alcun supporto integrato per l'impostazione dei segni a intervalli nemmeno. Potresti decidere sulle posizioni X in cui desideri i marchi, usa EG numpy.searchsorted Per trovare quali dati sono le posizioni tra loro, quindi interpolare tra i punti vicini per trovare le coordinate Y.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top