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.