geom_point 颜色使用 ggplot2 不正确

问题描述 投票:0回答:1

我很困惑为什么我的点颜色不正确。我已经设置了自己的调色板并使用它来定义 geom_point() 的颜色,但实际绘制的颜色是不正确的。

colfunc <- colorRampPalette(c("black", "#FFAFAF"))
plot(rep(1,41), col=colfunc(41), pch=19, cex=3)

cols <- colfunc(41)

df$cols <- cols[df$num]

baseMap <- ggplot(data = world) +
  geom_sf(color = "black", fill = "grey") +
  geom_point(data = df, 
             mapping = aes(x = lon, y = lat, col = cols[num])) +
  xlab("Longitude") + ylab("Latitude")

baseMap

我创建的调色板如下所示:

Colour palette

但这会产生以下颜色:

Resulting colours

为什么这些颜色不匹配?

谢谢

我尝试了多种不同的设置 aes() 的方法,但无法弄清楚为什么颜色不匹配

r ggplot2 maps geom-point
1个回答
0
投票

您需要

scale_colour_manual()
或类似的。 我们没有您的
df
。这是基于另一个
df
的示例:

library(ggplot2)
colfunc <- colorRampPalette(c("black", "#FFAFAF"))
# plot(rep(1,41), col=colfunc(41), pch=19, cex=3)
cols <- colfunc(41)
world <-ggplot2::map_data(map = "world")

set.seed(1)
df <- data.frame(lon = runif(41, min(world$long), max(world$long)),
                 lat = runif(41, min(world$lat), max(world$lat)), 
                 id = 1:41, cols = cols)

ggplot(world, aes(x = long, y = lat)) + 
  geom_polygon(aes(group = group), colour = "grey") +
  geom_point(data = df, 
             mapping = aes(x = lon, y = lat, 
                           colour = factor(id))) +
  scale_colour_manual(values = df$cols) +
  xlab("Longitude") + ylab("Latitude")

创建于 2023-11-18,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.