我想构建一个带有包含异常的颜色渐变的 ggplot。
例如,假设我希望渐变从
blue
到 black
,但特殊值 21
为 red
。
这可以使用 2 个具有数据过滤功能的几何对象来完成:
library(tidyverse)
mtcars %>%
ggplot(aes(x = qsec, y = wt, color = mpg)) +
geom_point(size = 3, data=~filter(.x, mpg==21), color="red") +
geom_point(size = 3, data=~filter(.x, mpg>21)) +
scale_color_gradient(low="blue", high="black",
transform = "log")
创建于 2024-12-08,使用 reprex v2.1.1
但是,使用这种技术有令人烦恼的副作用,其中之一是图例不包含红色值。
有没有一种方法可以用一个标准几何图形达到相同的结果?
在
values
中指定 scale_color_gradient
参数可以让您控制沿渐变的颜色位置。
library(ggplot2)
library(dplyr)
mtcars |>
filter(mpg >= 21) |>
ggplot(aes(x = qsec, y = wt, color = mpg)) +
geom_point(size = 3) +
scale_color_gradientn(colours = c('red', 'blue', 'black'),
values = c(0,0.01,1),
transform = 'log')