Mi sono imbattuto in una serie di situazioni in cui voglio tracciare più punti di quelli che dovrei essere - il principale ostacolo è che quando condivido i miei complotti con le persone o li incorporo in documenti, occupano troppo spazio. È molto semplice campionare casualmente le righe in un dataframe.punti di trama massima in R?
se voglio un campione realmente casuale per una trama punto, è facile dire:
ggplot(x,y,data=myDf[sample(1:nrow(myDf),1000),])
Tuttavia, mi chiedevo se ci fossero più efficaci (idealmente in scatola) modi per specificare il numero di punti della trama in modo tale che i tuoi dati effettivi si riflettano accuratamente nella trama. Quindi ecco un esempio. Supponiamo di tracciare qualcosa come il CCDF di una distribuzione a coda pesante, ad es.
ccdf <- function(myList,density=FALSE)
{
# generates the CCDF of a list or vector
freqs = table(myList)
X = rev(as.numeric(names(freqs)))
Y =cumsum(rev(as.list(freqs)));
data.frame(x=X,count=Y)
}
qplot(x,count,data=ccdf(rlnorm(10000,3,2.4)),log='xy')
Ciò produrrà un grafico in cui l'asse y x & diventano sempre più fitta. Qui sarebbe ideale avere un minor numero di campioni tracciati per grandi valori xey.
Qualcuno ha suggerimenti o suggerimenti per trattare problemi simili?
Grazie, -e
Ciao Rob, Dirk - tengo a precisare che io sono non è alla ricerca di un modo per gestire la sovrapposizione usando un diverso metodo di visualizzazione. In particolare, voglio fare un grafico a punti che io possa incorporare in un foglio LaTeX come grafica vettoriale scalabile. Il modo in cui mi piacerebbe farlo è ridurre il numero di punti di trama necessari per trasmettere i miei dati. – eytan
Quindi il sottocampionamento potrebbe essere la soluzione migliore. Ciò può naturalmente essere fatto con campionamenti "non uniformi", quindi potresti voler tenere più punti (o anche tutti) dalle code, ma puoi permetterti di ridurre drasticamente la parte principale. Ma questo sembra problematico, quindi potresti doverlo cucinare da solo. –