【发布时间】:2016-03-02 15:30:54
【问题描述】:
我有过度绘图的问题。
情况如下所示:我有一些带有坐标和不同地名的数据,一些地方在同一个版本中 - 所以我有几个地名的相同坐标。如何绘制它以使它们不会相互覆盖?我尝试了不同的形状,最好的选择是散布这些点,或者用很少的颜色绘制一个点?但我不知道该怎么做。我将不胜感激任何帮助。
代码示例:
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)
更新 根据 Philip 的回答,我做了这样的事情:
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)
输出
【问题讨论】: