我在创建地图时遇到一些问题ggplot2
在上面我使用投影点geom_point
。当导出为 pdf 或其他支持时,点大小会有所不同(因为她是绝对的,而不是相对于轴的)。我搜索了如何改变它,并找到了很多答案,说这是故意的,因为如果不是这种情况,每次轴比例改变时它都会变成椭圆。然而,我明白,因为我在地图上工作,所以我使用coord_fixed
修复输出并避免地图扭曲,所以如果我能够相对于绘图大小固定点大小,那就不会有问题。
有什么解决方案可以做到这一点吗?我读过一些有趣的事情建议使用geom_polygon
人为地创建椭圆。但我用这个方法有两个问题:
事实:我会很高兴能够覆盖无法确定点大小的相对单位的可能性,或者提供一些帮助让我了解如何使用该函数创建相同的东西geom_polygon
.
我尝试在这里加入一个可重复的小例子。这只是一个例子,我的数据的问题是我有很多闭合的小值(主要是1,就像可重现示例中的小点),所以它们看起来真的很好,但是导出时它可能会变得很大并通过过度绘制产生很多问题,这就是我需要修复这个比率的原因。
地图信息链接 http://data.geo.admin.ch/ch.swisstopo-vd.ortschaftenverzeichnis_plz/PLZO_CSV_LV03.zip and 地图信息的第二个链接 http://data.geo.admin.ch/ch.swisstopo-vd.ortschaftenverzeichnis_plz/PLZO_SHP_LV03.zip
dat <- data.frame(postcode=c(3012, 2000, 1669, 4054, 6558), n=c(1, 20, 40, 60, 80))
ch <- read.csv("location/PLZO_CSV_LV03/PLZO_CSV_LV03.csv", sep=";")#first link, to attribute a geographical location for each postcode
ch <- ch%>%
distinct(PLZ, .keep_all=TRUE)%>%
group_by(PLZ, N, E)%>%
summarise
ch <- ch%>%
filter(PLZ %in% dat$postcode)
ch <- ch%>%
arrange(desc(as.numeric(PLZ)))
dat <- dat%>%
arrange(desc(as.numeric(postcode)))
datmap <- bind_cols(dat, ch)
ch2 <- readOGR("location/PLZO_SHP_LV03/PLZO_PLZ.shp")#second link, to make the shape of the country
ch2 <- fortify(ch2)
a <- ggplot()+
geom_polygon(dat=ch2, aes(x=long, y=lat, group=group), colour="grey75", fill="grey75")+
geom_jitter(data=datmap, aes(x=E, y=N, group=FALSE, size=n), color=c("red"))+ #here I put geom_jitter, but geom_point is fine too
scale_size_continuous(range=c(0.7, 5))+
coord_fixed()
print(a)
先谢谢您的帮助!