Ho un set di dati, in cui ogni punto di dati ha un valore x che è vincolato (rappresenta un'istanza reale di una variabile quantitativa), valore y che è arbitrario (esiste semplicemente per fornire una dimensione per diffondere il testo) e un'etichetta. I miei set di dati possono essere molto grandi e spesso c'è sovrapposizione di testo, anche quando provo a diffondere il più possibile i dati sull'asse y.ggrepel: Respingere il testo in una sola direzione e restituire i valori del testo respinto
Quindi, sto cercando di utilizzare il nuovo ggrepel. Tuttavia, sto cercando di mantenere le etichette di testo vincolate nella loro posizione x-value, pur consentendo loro di respingere l'una dall'altra nella direzione y.
Ad esempio, il codice seguente produce un grafico per 32 punti dati, in cui i valori x mostrano il numero di cilindri in un'automobile ei valori y sono determinati in modo casuale (non hanno significato se non fornire un secondo dimensione per scopi di stampa del testo). Senza usare ggrepel, v'è una significativa sovrapposizione nel testo:
library(ggrepel)
library(ggplot2)
set.seed(1)
data = data.frame(x=runif(100, 1, 10),y=runif(100, 1, 10),label=paste0("label",seq(1:100)))
origPlot <- ggplot(data) +
geom_point(aes(x, y), color = 'red') +
geom_text(aes(x, y, label = label)) +
theme_classic(base_size = 16)
posso rimediare la sovrapposizione testo utilizzando ggrepel, come mostrato sotto. Tuttavia, questo cambia non solo i valori y, ma anche i valori x. Sto cercando di evitare di modificare i valori x, in quanto rappresentano un significato fisico (il numero di cilindri):
repelPlot <- ggplot(data) +
geom_point(aes(x, y), color = 'red') +
geom_text_repel(aes(x, y, label = label)) +
theme_classic(base_size = 16)
Come nota, il motivo non posso permettere il valore x del testo da modificare è perché sto solo tracciando il testo (non i punti). Mentre sembra che molti esempi in ggrepel mantengano la posizione dei punti (in modo che i loro valori rimangano veri) e respingano solo i valori xey delle etichette. Quindi, i punti e collegati alle etichette con segmenti (puoi vederlo nel mio secondo esempio di trama).
Ho mantenuto i punti nei due esempi sopra a scopo dimostrativo. Tuttavia, sto solo mantenendo il testo (e quindi sarà la rimozione dei punti e segmenti), lasciandomi con qualcosa di simile:
repelPlot2 <- ggplot(data) + geom_text_repel(aes(x, y, label = label), segment.size = 0) + theme_classic(base_size = 16)
La mia domanda è duplice:
1) È possibile per me respingere le etichette di testo solo nella direzione y?
2) È possibile ottenere una struttura contenente i nuovi valori (respinti) y del testo?
Grazie per qualsiasi consiglio!
Non capisco come risolvere il problema? Grazie. – luckButtered