我有一个数据帧samp,用户ID,纬度,经度,mb。我想用一个与所用MB成比例的点绘制地图。我想在geom_point中使用甜甜圈形状,所以我想我可以使用两个不同大小的pch = 20来获得pch的甜甜圈形状。但我面临一些问题。
m <- get_map(location=c(lon=median(samp$longitude),lat=median(samp$latitude) ), zoom=10)
print(ggmap(m) +
geom_point(aes(x=longitude, y=latitude, size= mb.user), colour="orange", pch = 20, data=samp) +
geom_point(aes(x=longitude, y=latitude, size= mb.user), colour="black", pch = 20, size = 4, data=samp))
但我得到了类似的东西,
整个地图的形状都不均匀。我希望形状是均匀的,并与mb.user值成比例。但这里的地图既不与mb.user或大小成比例。
此外,图例也只显示一种颜色。它没有一起显示两种颜色。理想情况下,我想要一个圆圈形符号,其大小与mb.user成正比。
有人能帮助我找到我在这里做的错误吗?
由于
答案 0 :(得分:1)
如果使用具有边框的点形状,则只能绘制一次点,它将在图例中正确显示。如果您安装了ggplot2版本2(截至本文撰写时最新版本为2.1.0),您还可以使用stroke
参数控制点边框的宽度。您还没有提供可重现的示例,因此以下是使用内置mtcars
数据框的示例:
ggplot(mtcars, aes(wt, mpg)) +
geom_point(aes(size=mpg), colour="red", fill="black", shape=21, stroke=1.5) +
scale_size_area(max_size=4)
shape=21
是一个带边框的实心圆圈(有关可用形状,请参阅?pch
)。 colour
设置边框颜色,fill
设置填充颜色,stroke
设置边框宽度。
关于原始代码,黑圈的大小都相同,因为您在size=mb.user
的调用之外设置了size=4
来覆盖aes
。在黑点大于橙色点的情况下,您无法看到一些橙色点。如果您移除size=4
并在size=0.3*mb.user
内执行aes
,则会在缩放的橙色点内获得正确缩放的黑点。
然而,这仍然无法解决传奇问题。我不认为通过两次单独调用geom_point
来获得带有黑色内橙色点的传奇,因为没有办法(至少没有我能想到的) of)创建一个组合的大小/颜色映射来做到这一点。使用带有填充标记的单个调用geom_point
可以解决问题,但我想我会尽力解释为什么原始代码没有像您预期的那样工作。