R geom_点图例颜色具有反转的形状覆盖,而不是实际形状
您可以在下图中看到“颜色”图例动作不正确。我期待一个彩色的圆圈(例如,彩色的应该是绿色的圆圈),但是背景是绿色的,你可以看到黑色的覆盖物似乎是某种类型的边界框 这是我的密码:R geom_点图例颜色具有反转的形状覆盖,而不是实际形状,r,ggplot2,ggmap,R,Ggplot2,Ggmap,您可以在下图中看到“颜色”图例动作不正确。我期待一个彩色的圆圈(例如,彩色的应该是绿色的圆圈),但是背景是绿色的,你可以看到黑色的覆盖物似乎是某种类型的边界框 这是我的密码: library(ggmap) c_map <- c(left = -86.817417, bottom = 36.133247, right = -86.793141, top = 36.153650) campus <- get_stamenmap(c_map, zoom = 15, maptype =
library(ggmap)
c_map <- c(left = -86.817417, bottom = 36.133247, right = -86.793141, top = 36.153650)
campus <- get_stamenmap(c_map, zoom = 15, maptype = "toner-lines")
some_data <- read.csv('https://gist.githubusercontent.com/pconwell/085c1413e418adaa7c1e203c9680a0f8/raw/c7a3e5f7aa900de6bc2bcccd5dc5d9b8f7e31b81/some_data.csv')
ggmap(campus, darken = c(0.33, "white"), extent = "device") +
stat_density2d(data = some_data,
aes(x = longitude,
y = latitude,
fill = stat(nlevel),
alpha = stat(nlevel)),
size = 2,
bins = 12,
geom = "polygon"
) +
scale_fill_gradientn(guide = "colorbar",
colours = c("#adddd1", "#3e98af", "#375980"),
breaks=c(0.2, 0.9),
labels=c("Least","Most"),
name = "Heat Map"
) +
geom_point(data = some_data,
aes(x = longitude,
y = latitude,
color = color,
shape = shape),
alpha = .75,
size = 4
) +
scale_alpha_continuous(range = c(0.33, 0.66),
guide = FALSE
)
库(ggmap)
c_map背景和边界框来自多边形颜色的图例。下面是一个简单的可复制示例:
库(ggplot2)
#>警告:包“ggplot2”是在R版本3.5.3下生成的
种子(42)
df美学映射:
#>*`color`->“#3366FF”
#>*`size`->0.5
StatDensity2d$default_aes这个问题的简化版本(删除了对ggmap
和谷歌API键的要求)表明,它主要是关于多余的参数。稍后将代码分层,因为这些层构建了图例中包含的内容。stat\u density2d
中的size参数对geom设置为polygon没有任何作用;它仅适用于轮廓,例如:
库(ggplot2)
一些数据并非直接与问题有关,但建议:使用ggmap
获取基本地图需要一个谷歌地图API密钥。在你的数据集上用ggmap
调用替换ggplot
就可以消除对API键的要求,但仍然会重新产生问题,使更多的人更容易帮助。奇怪的是,我不必使用我记得的API键——但如果这有什么不同的话,我也是雄蕊映射。不过,我会考虑使用ggplot,我认为这是基于前一段时间的更新,您通常需要一个API密钥ggmap
对这个问题也不是必不可少的。似乎密度中有一个大小参数,可能是以前版本的保留?密度层中没有任何东西需要大小,但是size=2
是在颜色图例点周围创建大小为2的边框的原因--删除该参数,不再添加边框我想我刚才输入了一个API键-我不记得了,ggmap也没有抱怨过,所以。。。但是回到你的观点,用ggplot
替换ggmap
会给我一个错误error:“data”必须是一个数据帧,或者是其他可以通过“fortify()”强制的对象,而不是一个类为ggmap/graster
的S3对象,我猜它与get_stamenmap()
相关,我还没有弄清楚如何解决这个问题。但我会继续寻找。用color='transparent'
替换stat\u density2d
中的size=2
;多边形笔划被图例拾取。当我运行您的示例时,我仍然在第二个绘图中获取颜色图例的边框。我想这是因为图形设备(我在Windows上),当我用Cairo\u png()
设备渲染时,边框消失了:我想是零宽度。@MikkoMarttila很奇怪。我在Mac电脑上,没有任何其他可供测试的设备,但图形设备可能很挑剔