Mam bazę danych zawierającą języki, ich długości i szerokości geograficzne oraz wartość cechy (albo kategoria 1, kategoria 2 lub obie - na wykresie są one oznaczone odpowiednio czerwonym, niebieskim i zielonym). Mogą występować maksymalnie trzy punkty na język i oczywiście dwa punkty językowe mogą znajdować się bardzo blisko siebie.
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
...
Używam pakietu R ggplot2 (to ten, który znam najbardziej, więc chętnie bym go nadal używał - ale mile widziane są również inne rozwiązania). Oto kadr z poprzedniej próby (kod: patrz poniżej 1 ):
W każdym punkcie chciałbym, aby (szorstka) pozycja - a także wartość - była nadal widoczna. (Jeśli istnieje wiele punktów dla jednego języka, można je łączyć).
Czy istnieje sposób na ...
- ... aby przesunąć punkty na bok tylko na tyle, aby nie było przerysowania (mniej losowo niż, powiedzmy, przy użyciu geom_jitter - na przykład istnieje wiele tego rodzaju unikania w pakiecie ochrony pszczół )?
- ... i / lub mieć jakąś „linię” wskazującą pierwotne położenie punktu, gdyby musiał zostać przesunięty?
- ... lub połączyć punkty poboczne w taki sposób, aby były one nadal wyraźne (prawdopodobnie istnieje tam technika działania, która wykorzystuje binowanie, tj. stat_bin * lub coś z podobnym efektem)?
... lub stworzyć „interaktywną fabułę”, taką jak te widoczne na stronach internetowych, które nadal mogą być zawarte w pliku pdf (myślę też o możliwościach pakietów takich jak animacja i błyszczące tutaj)? Na przykład wygląda to tak na wals.info :
Z poprzedniego postu wiem, że pakiet directlabels może przenosić etykiety, ale nie znalazłem sposobu, aby przenieść punkty również.
Poproś o wyjaśnienia!
Uwaga: zdaję sobie sprawę z tego, że pojawiło się wiele pytań dotyczących nadmiernego plotkowania, ale te, na które spojrzałem, wydawały się mieć inny (tj. Statystyczny) cel (nie twierdzę, że wszystko przeczytałem , więc „ d oczywiście chętnie zaakceptuje link). Spróbuję wymienić te posty, które znam i które mogą być odpowiednie (- z tego, co przeczytałem, żaden z nich nie odpowiada dokładnie na moje pytanie).
- stats.SE: Jak uniknąć nakładania się etykiet na wykresie R?
- SO: Dynamiczna etykieta punktu danych Pozycjonowanie w ggmap
1 Poniższe wiersze kodu utworzyły kadr z góry.
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