R 如何在ggplot2中以连续颜色比例高亮显示单个值

R 如何在ggplot2中以连续颜色比例高亮显示单个值,r,ggplot2,scale-color-manual,R,Ggplot2,Scale Color Manual,发布的一个问题显示了如何声明缺少的一些值。我有一个类似的问题,只是我想用不同的颜色突出显示一个值,例如mpg=20。理想情况下,我希望它也能出现在传奇中 为了清楚起见,我想强调渐变上的一个特定值 我正在重用在另一篇文章中使用的代码来为这项工作播种种子。此代码指定数据的下限,但不允许任意选择值 我想知道人们是否知道如何在不使用诸如scale\u color\u gradientn之类的东西的情况下使用我们的 library(ggplot2) dat <- head(mtcars) dat$m

发布的一个问题显示了如何声明缺少的一些值。我有一个类似的问题,只是我想用不同的颜色突出显示一个值,例如
mpg=20
。理想情况下,我希望它也能出现在传奇中

为了清楚起见,我想强调渐变上的一个特定值

我正在重用在另一篇文章中使用的代码来为这项工作播种种子。此代码指定数据的下限,但不允许任意选择值

我想知道人们是否知道如何在不使用诸如
scale\u color\u gradientn
之类的东西的情况下使用我们的

library(ggplot2)
dat <- head(mtcars)
dat$model <- head(colnames(mtcars))
dat$is_low <- ifelse(dat$mpg < 20, TRUE, FALSE)

ggplot(dat, aes(x = model, y = mpg, fill = mpg)) +
    geom_col() + 
    scale_fill_continuous(limits=c(20,max(dat$mpg)))
库(ggplot2)

dat这是根据我给出的答案改编的,但它需要对调色板进行一些修改

这是一个自定义调色板函数,它将
目标
值之间的值替换为
替换颜色
,但它需要先知道数据的范围。请注意,该函数对用户不是很友好,但它确实做到了这一点

库(ggplot2)
图书馆(比例尺)

我的调色板作为一个一般性评论,你可以用
limits=c(20,max(dat$mpg))
替换
limits=c(20,NA))
来自动将上限更改为自然上限。我打算通过类似于
geom\u col(aes(alpha=(mpg==20))+scale\u alpha(…)的方法来实现这一点,除了焦条外,所有的条都要更亮/透明,但到目前为止,我还没有找到合适的咒语将
alpha
scale应用于填充组件…(==20无论如何都不起作用,因为我们需要一个范围-数据集中没有一辆车的mpg完全等于20…)此外,我不确定内部定义函数的x参数的值来自何处。我已经用log10比例的示例更新了答案。公平地说,scales软件包中的所有连续调色板都需要0-1之间的输入(请参阅scales::gradient\u n\u pal()
,我对其进行了修改),该函数只符合scales的功能。作为结果的内部函数用作比例尺的调色板,在绘图构建的映射阶段,该内部函数的参数是拟合到0-1.Perfect范围的输入数据!这是有道理的。谢谢