Come evitare le etichette sovrapposte in un diagramma R? [chiuso]


44

Sto cercando di etichettare un diagramma a dispersione piuttosto semplice in R. Questo è quello che uso:

plot(SI, TI)
text(SI, TI, Name, pos=4, cex=0.7)

Il risultato è mediocre, come puoi vedere (clicca per ingrandire):

inserisci qui la descrizione dell'immagine

Ho provato a compensare questo usando la textxyfunzione, ma non è meglio . Allargare l'immagine stessa non funziona per i cluster densi.

Esiste una funzione o un modo semplice per compensare questo e lasciare che le etichette della trama R non si sovrappongano ?


Ecco un piccolo sottoinsieme dei dati che ho:

Name;SI;TI
01_BAD_talking_head;6.944714;4.421208
01_GOOD_talking_head;5.680141;4.864035
01_GOOD_talking_head_subtitles;7.170114;4.664205

1
Ho pubblicato una domanda simile qui , dai un'occhiata alle risposte lì ..
Curioso

3
Ho trovato una soluzione ! Il identify()ti permette di decidere manualmente dove posizionare l'etichetta! Non è l'ideale, ma dalle soluzioni proposte funziona meglio per me.
Curioso,

Risposte:



19

Il directlabelspacchetto lo fa. Dalla sua pagina web :

Questo pacchetto è un tentativo di rendere l'etichettatura diretta una realtà nella pratica statistica quotidiana mettendo a disposizione un insieme di funzioni utili che rendono facile l'etichettatura diretta di grafici comuni con sistemi di stampa di alto livello come reticolo e ggplot2.

Tuttavia, potrebbe non essere sempre possibile per trame fitte.

Ecco un breve esempio:

set.seed(123)
a <- c(rnorm(10,-3,2),rnorm(10,3,2))
b <- c(rnorm(10,-3,2),rnorm(10,3,2))
dfr <- data.frame(a,b)
dfr$t <- c(paste("A",1:10,sep=""),paste("B",1:10,sep=""))
direct.label(xyplot(b~a,dfr,groups=t, col="black"))

Sono riuscito a sbarazzarmi del punto con cui colorare col="black", ma non alle etichette.


1
Sto avendo problemi a farlo funzionare. Potresti forse fornire un semplice esempio funzionante?
slhck

1
Nel tuo caso, qualcosa del genere direct.label(xyplot(SI~TI,data=yourDataFrame,group=Name))dovrebbe ottenere un risultato simile.
Laurent,

Perfezionare. Ecco cosa ho finito con l' uso del tuo ultimo esempio semplice. Le etichette e i punti dei colori sono in realtà molto belli, poiché sai dove appartengono le etichette.
slhck,

1
Ho dovuto usare library(lattice)per mettermi xyplotal lavoro.
David J. Harris,

14

Ti suggerirei di dare un'occhiata al wordcloudpacchetto. So che questo pacchetto non si concentra esattamente sui punti ma sulle etichette stesse, e anche lo stile sembra essere piuttosto fisso. Tuttavia, i risultati che ho ottenuto dall'usarlo sono stati piuttosto sorprendenti. Si noti inoltre che la versione del pacchetto in questione è stata rilasciata nel momento in cui è stata posta la domanda, quindi è ancora molto nuova.

http://blog.fellstat.com/?cat=11

output textplot ()


9

Ho riscontrato un problema simile con molti dei grafici con cui ho lavorato e ho scritto un pacchetto di base che utilizza la simulazione del campo di forza per regolare le posizioni degli oggetti. Il vantaggio rispetto ad alcune delle soluzioni sopra citate è la regolazione dinamica della prossimità relativa degli oggetti in 2D. Sebbene siano possibili molti miglioramenti, inclusi l'euristica e l'integrazione con ggplot, ecc., Sembra che il compito sia raggiunto. Quanto segue illustra la funzionalità:

install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()

Per ora non esiste un'euristica per una varietà di aree e distribuzioni puntuali poiché la soluzione ha soddisfatto le mie esigenze e volevo ottenere qualcosa di utile per le persone rapidamente, ma le aggiungerò a medio termine. Al momento, consiglio di ridimensionare i grafici su 100x100 e viceversa e modificare leggermente i parametri di attrazione e repulsione predefiniti, come garantito.


8

Nel caso in cui semplicemente non riesca a far funzionare correttamente le etichette come prodotto da R, tieni presente che puoi sempre salvare i grafici in un formato vettoriale (come .pdf) e inserirli in un programma di modifica come InkScape o Adobe Illustrator.


8

Un paio di strumenti aggiuntivi da guardare in R:

Questi non faranno tutto per te, ma uno di loro potrebbe far parte di una soluzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.