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电脑上,没有任何其他可供测试的设备,但图形设备可能很挑剔