Traccia con meno marcatori rispetto ai punti dati (o un modo migliore per tracciare i CDF?) [Matplotlib, o aiuto generale di trama
-
19-09-2019 - |
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')
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.