Ho un database che contiene le lingue, le loro lunghezze e latitudini e un valore di funzionalità (categoria 1, categoria 2 o entrambi - nella trama questi sono contrassegnati rispettivamente in rosso, blu e verde). Possono esserci fino a tre punti per lingua e naturalmente due punti lingua possono trovarsi molto vicini l'uno all'altro.
name longitude latitude sp_sum
1 Modern Armenian 45 40 both
2 Modern Armenian 45 40 both
3 Modern Armenian 45 40 spatial
4 Dieri 138 -28.1667 both
5 Dieri 138 -28.1667 both
6 Finnish 25.5577 64.7628 non-spatial
7 Crimean Tatar 28.1418 43.8398 spatial
8 Ese Ejja -67.515 -11.7268 non-spatial
9 Makhuwa 38.8052 -14.8509 non-spatial
...
Sto usando il pacchetto R ggplot2 (è quello con cui ho più familiarità, quindi sarei felice di continuare a usarlo, ma altre soluzioni sono benvenute). Ecco un ritaglio di un tentativo precedente (codice: vedi sotto 1 ):
Per ogni punto, vorrei che la posizione (approssimativa) - così come il valore - fosse ancora visibile. (Se sono presenti più punti per una singola lingua, è possibile combinarli.)
C'è un modo o ...
- ... per spostare i punti di lato appena sufficiente in modo che non ci sia overplotting (meno casuale rispetto, ad esempio, utilizzando geom_jitter - c'è un sacco di questo tipo di schivare nel beeswarm pacchetto per esempio)?
- ... e / o avere una sorta di "linea" che punta alla posizione originale di un punto se dovesse essere spostato?
- ... o per combinare i punti vicini in modo che siano ancora chiari (esiste probabilmente una tecnica di lavoro che utilizza il binning, cioè stat_bin * o qualcosa con un effetto simile)?
... o per creare una "trama interattiva" come quelle viste sui siti Web che possono ancora essere incluse in un pdf (sto pensando anche alle capacità di pacchetti come l' animazione e il lucido qui)? Ad esempio, sembra così su wals.info :
Da un post precedente qui, so che il pacchetto directlabels può spostare le etichette, ma non ho trovato il modo di farlo spostare anche i punti.
Sentiti libero di chiedere chiarimenti!
Nota: sono consapevole del fatto che ci sono state una serie di domande sulla sovrapposizione, ma quelle che ho esaminato tutte sembravano avere uno scopo diverso (cioè statistico) (non pretendo di aver letto tutto , quindi sarei felice di accettare anche un link, ovviamente). Cercherò di elencare quei post che conosco e che potrebbero essere pertinenti (- da quello che ho letto, nessuno di questi risponde esattamente alla mia domanda.)
- stats.SE: come evitare le etichette sovrapposte in un diagramma R?
- SO: Etichetta del punto dati dinamico Posizionamento in ggmap
1 Le seguenti righe di codice hanno creato il ritaglio dall'alto.
library(OpenStreetMap)
library(ggplot2)
data <- read.csv(header = T, sep = ",", dec = ".", quote= "'",
text = "'','name','longitude','latitude','sp_sum'
'1','Modern Armenian',45,40,'both'
'2','Modern Armenian',45,40,'both'
'3','Modern Armenian',45,40,'spatial'
'4','Dieri',138,-28.1667,'both'
'5','Dieri',138,-28.1667,'both'
'6','Finnish',25.5577,64.7628,'non-spatial'
'7','Crimean Tatar',28.1418,43.8398,'spatial'
'8','Sochiapam Chinantec',-96.6079,17.7985,'non-spatial'
'9','Ese Ejja',-67.515,-11.7268,'non-spatial'
'10','Makhuwa',38.8052,-14.8509,'non-spatial'
'11','Mualang',111.077,0.31083,'non-spatial'
'12','Martuthunira',116.607,-20.9294,'non-spatial'
'13','Evenki',108.626,53.85,'both'
'14','Afrikaans',30,-22,'both'
'15','Male (Ethiopia)',36.9892,5.91975,'both'
'16','Manchu',126.557,47.3122,'both'
'17','Dime',36.3329,6.20951,'non-spatial'
'18','Koorete',37.8679,5.80545,'non-spatial'
'19','Wolaytta',37.7537,6.32668,'both'
'20','Dizin',35.5763,6.1405,'both'")
map <- openproj(openmap(c(85, -179.9), c(-60, 179.9), zoom = 2, type = "nps"))
plot <- autoplot(map) +
geom_point(data = data, aes(x = longitude, y = latitude),
color = "white", alpha = 0.8, size = 8) +
geom_point(data = data, aes(x = longitude, y = latitude, color = sp_sum),
alpha = 0.3, size = 4)
plot