У меня проблема с перерисовкой.
Ситуация выглядит так: у меня есть некоторые данные с координатами и разными названиями мест, некоторые места находятся в одной сборке - поэтому у меня есть одинаковые координаты для нескольких названий мест. Как сделать так, чтобы они не перекрывали друг друга? Я пробовал с разными формами, лучшим вариантом было бы разбросать эти точки или, может быть, нарисовать одну точку несколькими цветами? Но я понятия не имею, как это сделать. Я буду признателен за любую помощь.
Пример кода:
require(rgdal)
require(ggmap)
require(maptools)
require (plyr)
swd <- structure(list(nazwa = structure(c(8L, 8L, 9L, 7L, 7L, 7L, 3L,
5L, 6L, 4L, 2L, 2L, 1L), .Label = c("ODDZIAŁ CHIRURGII ONKOLOGICZNEJ",
"ODDZIAŁ GINEKOLOGII ONKOLOGICZNEJ", "ODDZIAŁ ONKOLOGICZNY",
"ODDZIAŁ ONKOLOGII I HEMATOLOGII DZIECIĘCEJ", "ODDZIAŁ ONKOLOGII KLINICZNEJ CHEMIOTERAPII",
"ODDZIAŁ RADIOTERAPII", "PORADNIA CHIRURGII ONKOLOGICZNEJ", "PORADNIA ONKOLOGICZNA",
"PORADNIA RADIOTERAPII"), class = "factor"), miasto = structure(c(8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L), .Label = c("DZIAŁDOWO",
"ELBLĄG", "EŁK", "GIŻYCKO", "MRĄGOWO", "NOWE MIASTO LUBAWSKIE",
"OLECKO", "OLSZTYN", "OSTRÓDA", "PISZ", "SZCZYTNO"), class = "factor"),
dom = structure(c(17L, 5L, 17L, 17L, 8L, 18L, 5L, 17L, 17L,
20L, 17L, 19L, 17L), .Label = c("BARANKI 24", "GNIEŹNIEŃSKA 2",
"GOŁDAPSKA 1", "HENRYKA SIENKIEWICZA 4", "JAGIELLOŃSKA 78",
"JANA III SOBIESKIEGO 3 C/44", "KONOPNICKIEJ 1", "KOPERNIKA 30",
"KOŚCIUSZKI 30", "KRÓLEWIECKA 146", "KRÓLEWIECKA 146 146",
"LEŚNA 1", "MICKIEWICZA 10", "MICKIEWICZA 14", "OSEDLE MAZURSKIE 33 A",
"WARSZAWSKA 41", "WOJSKA POLSKIEGO 37", "ŻOŁNIERSKA 16B",
"ŻOŁNIERSKA 18", "ŻOŁNIERSKA 18 A"), class = "factor"), Lat = c(53.794077,
53.80182, 53.794077, 53.794077, 53.7827025, 53.7688275, 53.80182,
53.794077, 53.794077, 53.7696245, 53.794077, 53.7698809,
53.794077), Long = c(20.483249, 20.508952, 20.483249, 20.483249,
20.4918876, 20.4903438, 20.508952, 20.483249, 20.483249,
20.4927874, 20.483249, 20.492049, 20.483249)), .Names = c("nazwa",
"miasto", "dom", "Lat", "Long"), row.names = c(1L, 2L, 12L, 13L,
14L, 15L, 23L, 25L, 27L, 29L, 30L, 31L, 32L), class = "data.frame")
polska <- get_googlemap(
center =c('Olsztyn, Polska'),
zoom=12,
maptype="roadmap" ,
scale = 2
,color = "bw"
)
kontury<- ggmap(polska)
punkty <- kontury+ geom_point( aes(x=Long, y=Lat, color=nazwa, shape=nazwa )
,data=subset(swd,( nazwa=='ODDZIAŁ GINEKOLOGII ONKOLOGICZNEJ'|
nazwa=='PORADNIA CHIRURGII ONKOLOGICZNEJ'|
nazwa=='ODDZIAŁ ONKOLOGII KLINICZNEJ CHEMIOTERAPII'|
nazwa=='PORADNIA ONKOLOGICZNA'|
nazwa=='ODDZIAŁ RADIOTERAPII'&
miasto=="OLSZTYN"))
,size=7
)+
guides(fill = guide_legend(ncol = 1)) +
theme(legend.position="right") +
scale_shape_manual(values = c(15,16,17,18,19,20), name="Symbol")
print(punkty)
ОБНОВЛЕНИЕ на основе ответа Филиппа. Я сделал что-то вроде этого:
require(rgdal)
require(ggmap)
require(maptools)
require (plyr)
swd <- structure(list(nazwa = structure(c(8L, 8L, 9L, 7L, 7L, 7L, 3L,
5L, 6L, 4L, 2L, 2L, 1L), .Label = c("ODDZIAŁ CHIRURGII ONKOLOGICZNEJ",
"ODDZIAŁ GINEKOLOGII ONKOLOGICZNEJ", "ODDZIAŁ ONKOLOGICZNY",
"ODDZIAŁ ONKOLOGII I HEMATOLOGII DZIECIĘCEJ", "ODDZIAŁ ONKOLOGII KLINICZNEJ CHEMIOTERAPII",
"ODDZIAŁ RADIOTERAPII", "PORADNIA CHIRURGII ONKOLOGICZNEJ", "PORADNIA ONKOLOGICZNA",
"PORADNIA RADIOTERAPII"), class = "factor"), miasto = structure(c(8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L), .Label = c("DZIAŁDOWO",
"ELBLĄG", "EŁK", "GIŻYCKO", "MRĄGOWO", "NOWE MIASTO LUBAWSKIE",
"OLECKO", "OLSZTYN", "OSTRÓDA", "PISZ", "SZCZYTNO"), class = "factor"),
dom = structure(c(17L, 5L, 17L, 17L, 8L, 18L, 5L, 17L, 17L,
20L, 17L, 19L, 17L), .Label = c("BARANKI 24", "GNIEŹNIEŃSKA 2",
"GOŁDAPSKA 1", "HENRYKA SIENKIEWICZA 4", "JAGIELLOŃSKA 78",
"JANA III SOBIESKIEGO 3 C/44", "KONOPNICKIEJ 1", "KOPERNIKA 30",
"KOŚCIUSZKI 30", "KRÓLEWIECKA 146", "KRÓLEWIECKA 146 146",
"LEŚNA 1", "MICKIEWICZA 10", "MICKIEWICZA 14", "OSEDLE MAZURSKIE 33 A",
"WARSZAWSKA 41", "WOJSKA POLSKIEGO 37", "ŻOŁNIERSKA 16B",
"ŻOŁNIERSKA 18", "ŻOŁNIERSKA 18 A"), class = "factor"), Lat = c(53.794077,
53.80182, 53.794077, 53.794077, 53.7827025, 53.7688275, 53.80182,
53.794077, 53.794077, 53.7696245, 53.794077, 53.7698809,
53.794077), Long = c(20.483249, 20.508952, 20.483249, 20.483249,
20.4918876, 20.4903438, 20.508952, 20.483249, 20.483249,
20.4927874, 20.483249, 20.492049, 20.483249)), .Names = c("nazwa",
"miasto", "dom", "Lat", "Long"), row.names = c(1L, 2L, 12L, 13L,
14L, 15L, 23L, 25L, 27L, 29L, 30L, 31L, 32L), class = "data.frame")
swd <- data.table(swd) # idk rly why but it didnt want to work w/o this command
setkey(swd,dom)
swd <- swd[swd[,.N,keyby=dom],.(dom,is.unique=N==1,nazwa,miasto,Lat,Long)]
olsztynOSM <- get_openstreetmap(bbox = c (left=20.4359, bottom = 53.7319, right= 20.5623, top= 53.81), scale = 40913, color = c('color'))
moja.paleta <- brewer.pal(9, "Set1")
swd$kolor <- moja.paleta[swd$nazwa]
konturyOSM<- ggmap(olsztynOSM)
punkty <- konturyOSM + geom_jitter(aes(x=Long,y=Lat,fill=nazwa), data = swd[!(is.unique)], width=0.006,height=0.006, size=7,pch=21) +
geom_point(aes(x=Long,y=Lat,fill=nazwa), data = swd[(is.unique)], size=7, pch=25)+
scale_fill_manual( values=setNames(moja.paleta,levels(swd$nazwa)),name='Legenda' ) +
guides(fill = guide_legend(ncol = 1)) +
theme(legend.position="right")
plot(punkty)
ВЫВОД