我在使用ggplot2
创建地图时遇到了一些问题,我使用geom_point
投影点。在pdf或其他支持中导出时,点大小会有所不同(因为她是绝对的而不是轴相对的)。我已经搜索了如何更改它并找到了很多答案,说它是有目的的,因为如果不是这样的话,每次轴的改变都会改变为椭圆形。但是,我理解这一点,因为我在地图上工作,我使用coord_fixed
来修复输出并避免地图的扭曲,所以如果我能够相对于绘图大小修复点大小,它就不会# 39;这是一个问题。
有没有办法解决这个问题?我已经阅读了一些有趣的事情,建议使用geom_polygon
人工创建省略号。但是这个方法有两个问题:
首先,我不知道如何使用我的数据实现这一点,现在我知道我的点的中心所在的位置,但我怎么能说明如何定义所有的中心然后呢?定义一个填充的圆圈多边形?
其次我使用scale_size_continuous
相对于其他变量绘制更小或更大的点。我如何使用geom_polygon
实现该功能?
Facit:我很高兴有可能覆盖不可能确定点大小的相对单位,或者有一些帮助让我理解如何用函数geom_polygon
创建相同的东西
我试图在这里加入一个可重复的小例子。这只是一个例子,我的数据的问题是我有很多封闭的小值(主要是1,就像可重复的例子中的小点),所以它们看起来非常好,但是当它出口时它会变得非常大并且通过过度绘图产生了很多问题,这就是为什么我需要修正这个比例。
Link for the map informations和second link for map informations
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)
提前感谢您的帮助!
答案 0 :(得分:3)
您可以使用ggsave()
保存最后一个图并调整用于点/线等的比例因子。试试这个:
ggplot(data = ch2) +
geom_polygon(aes(x=long, y=lat, group=group),
colour="grey85", fill="grey90") +
geom_point(data=datmap, aes(x=E, y=N, group=FALSE, size=n),
color=c("red"), alpha = 0.5) +
scale_size_continuous(range=c(0.7, 5)) +
coord_fixed() +
theme_void()
ggsave(filename = 'plot.pdf', scale = 2, width = 3, height = 3)
使用scale
参数(以及可选的宽度和高度),直到您对结果感到满意为止。
请勿使用geom_jitter()
:这会为您的积分添加随机XY变化。要处理过度绘图,您可以尝试添加透明度 - 我为此添加了alpha
参数。我还使用theme_void()
来摆脱轴和背景。
包含地图信息的形状文件非常繁重:您可以尝试使用瑞士各州的简单文件,例如this one。