如何在不同的geom_sf调用中更改填充颜色?

10

我正在使用ggplot2绘制sf对象。我有一组多边形buffered,每个多边形density都有一个密度值。我想将此与单个sf点GPS_point一起作为参考点绘制。我遇到的问题是我无法为每个对象单独设置fill颜色。

ggplot() +
  geom_sf(data = buffered, aes(fill = density),lwd = 0) + #polygons filled based on the density value
  geom_sf(data = GPS_point, aes(fill = "red"), size = 5) + #reference point that I want to make red
  scale_fill_viridis_c(option = "magma",begin = 0.1)

我想将参考点的填充颜色设置为红色。当前代码将两个对象的填充都设置为magma。问题在于,这使得参考点和背景颜色无法区分,因为它们最终变成了相同的颜色。是否有办法分别操纵这两个geom_sf调用的填充颜色?


2
当你将fill放在aes()内部时,它会将其视为一个变量并使用你的颜色调色板。为了获得你想要的结果,只需将fill = 'red'放在美学之外即可。 - Chris
1
我尝试了一下,但它仍然显示为黑色(这是“岩浆”调色板的0值)。 - David
7
啊,我忽视了点数据的正确参数应该是 colcolour 而不是 fill - Chris
搞定了。谢谢! - David
1
@zx8754已经完成了,谢谢。 - Chris
1
@Chris,你在4年内获得了18K的观看次数,可惜错过了很多赞哦 :) - zx8754
1个回答

2
把硬编码的颜色传递给几何对象的正确语法是将其放在 aes 之外。
ggplot() +
  geom_sf(data = buffered, aes(fill = density),lwd = 0) + #polygons filled based on the density value
  geom_sf(data = GPS_point, fill = "red", size = 5) + #reference point that I want to make red
  scale_fill_viridis_c(option = "magma",begin = 0.1)

差异在于 `aes` 期望一个变量(就像在第一个 `geom_sf` 调用中传递的 'density'),它将根据该变量的值来渐变填充颜色。硬编码的颜色如 'red' 应该在不使用 `aes` 的情况下传递。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接