R 在ggplot2中高亮显示堆叠条形图的一个条形图

R 在ggplot2中高亮显示堆叠条形图的一个条形图,r,ggplot2,R,Ggplot2,我有一个堆叠的条形图,受第页的启发,我想突出显示条形图中的一个条形。例如,我希望中间栏的所有三种颜色都要深一点,第一栏和第三栏的所有颜色都要亮一点。我假设scale\u fill\u OkabeIto的darken参数在某种程度上可以派上用场 library(ggplot) library(colorblindr) ID <- rep(1:3, each = 3) group <- rep(letters[1:3], times = 3) prop <- c(0

我有一个堆叠的条形图,受第页的启发,我想突出显示条形图中的一个条形。例如,我希望中间栏的所有三种颜色都要深一点,第一栏和第三栏的所有颜色都要亮一点。我假设
scale\u fill\u OkabeIto
darken
参数在某种程度上可以派上用场

library(ggplot)    
library(colorblindr)
ID <- rep(1:3, each = 3)
group <- rep(letters[1:3], times = 3)    
prop <- c(0.8, 0.1, 0.1, 0.6, 0.3, 0.1, 0.4, 0.3, 0.3)

toy_df <- data.frame(ID = ID, group = group, prop = prop)

ggplot(toy_df, aes(x = ID, y = prop, fill = group)) +
  geom_bar(stat = "identity") +
  scale_fill_OkabeIto()
库(ggplot)
图书馆(色盲)

ID执行类似操作的最简单方法是根据ID是否是要突出显示的ID来更改alpha。您可以在数据帧中创建一个布尔变量,类似于
isHilite=ID==2
,也可以在绘图时内联执行

我删除了你的色标,只是因为我没有安装那个软件包,并且没有必要向你展示这个例子

如果您想进入更复杂的颜色函数,另一个选项是使用完全不同的颜色系统的。我还没有充分使用它来给出一个很好的答案,但是它有使颜色变暗、变亮和去饱和的功能

库(ggplot2)

ID这里有一个简单的方法,只需将alpha映射到ID是否为给定值

ggplot(toy_df, aes(x = ID, y = prop, fill = group, alpha=toy_df$ID != 2)) +
  geom_bar(stat = "identity") +
  scale_alpha_manual(values=c(1, 0.7)) +
  guides(alpha=F)


当然,您仍然可以使用您的色盲友好颜色集,在
aes
调用中使用
toy_df$
会导致错误。如果这样,请添加一行额外的代码:
toy_df$isdark有效,但您希望始终执行
aes
调用,如
alpha=isdark
alpha=ID!=2
,但不包括DataFrame的名称。例如,它可能会导致范围界定问题。这里有几篇文章提到了这一点:
ggplot
希望您给它的列在它所操作的数据帧中,所以最好只匹配预期的输入