在ggplot2中设置连续色标

Set continuous colour scale in ggplot2

我的代码如下:

sa_map3_plt <- OpenStreetMap::autoplot.OpenStreetMap(sa_map2) + 
geom_point( data = XY_ClassHF15_df, aes(x = x, y = y,colour= HF), size =  2.5  ) +
#scale_colour_gradientn(colours = terrain.colors(18))                 +
            scale_colour_gradient(low = "blue", high = "red", na.value = NA)
            xlab("Longitude (°E)") + ylab("Latitude (°S)" ) 
sa_map3_plt

生成下图:

不过我想做的是更改调色板,使其看起来像下图:

基本上,低值和高值将保持(几乎)相同,但中间颜色应该不同。我想有一种手动方法可以做到这一点,但我还没有设法做到这一点

显然我们没有您的数据,但使用一个简单的随机示例应该会在此处显示选项。

df <- data.frame(x = rnorm(10000), y = rnorm(10000), z = runif(10000))

首先,您可以尝试 scale_color_distillerpalette = "Spectral"

ggplot(df, aes(x, y, color = z)) +
  geom_point() +
  scale_color_distiller(palette = 'Spectral')

另一种选择是使用允许任意渐变的 scale_color_gradientn 自己指定一个完整的调色板。这与您的示例图像中的比例合理匹配。

ggplot(df, aes(x, y, color = z)) +
  geom_point() +
  scale_color_gradientn(colours = c('#5749a0', '#0f7ab0', '#00bbb1',
                                    '#bef0b0', '#fdf4af', '#f9b64b',
                                    '#ec840e', '#ca443d', '#a51a49'))