在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_distiller
和 palette = "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'))
我的代码如下:
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_distiller
和 palette = "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'))