首页 文章

ggplot geom_bar连续颜色填充基于条件的单独颜色

提问于
浏览
0

这是一个可重现的样本数据集,具有基于 Amount 的连续填充 . 从下面的示例中可以看出,我在 d 中也有一个名为 flag 的列 . 我想要的是能够通过将条的边框颜色更改为红色来可视化 flag .

# create reproducible data
library(ggplot2)
d <- read.csv(text='Day,Location,Length,Amount,flag
    1,4,3,1.1,FALSE
    1,3,1,2,FALSE
    1,2,3,4,FALSE
    1,1,3,5,FALSE
    2,0,0,0,FALSE
    3,3,3,1.8,TRUE
    3,2,1,3.54,FALSE
    3,1,3,1.1,FALSE',header=T)
ggplot(d, aes(x = Day, y = Length)) + 
geom_bar(aes(fill = Amount, order = -Location), stat = "identity")

我已经尝试了 alpha 并确实标记了所需的栏,但无法以我想要的方式显示数据:

ggplot(d, aes(x = Day, y = Length)) + 
geom_bar(aes(fill = Amount, order = -Location, alpha = -flag), stat = "identity")

alpha 当使用 -flags (注意 - )时也会混淆传说,这是不可取的 .

使用下面的命令返回一个我需要2个颜色变量的错误,但我只想要1, red

ggplot(d, aes(x = Day, y = Length)) + 
geom_bar(aes(fill = Amount, order = -Location, alpha = -flag), stat = "identity") + 
scale_colour_manual(values = alpha(c('red')))

回顾一下:

  • 我想显示 flag = TRUE 的红色轮廓(或同样明显的东西),而不改变 Amount 已经决定的连续比例 .

  • 我希望图例能用红色(或任何匹配)反映 flag = TRUE .

我无法找到适合网络的解决方案,因此我们非常感谢任何想法或建议!

1 回答

  • 2

    使用 colour=flagcolourgeom_bar 中的轮廓,而填充是填充) . 然后添加 + scale_colour_manual(values=c(NA, 'red')) ,如果 flag 为假(无边框),则使用 NA ,如果 flag 为真,则使用'red' .

    ggplot(d, aes(x = Day, y = Length)) + 
    geom_bar(aes(fill = Amount, order = -Location, col=flag), stat = "identity") +
      scale_colour_manual(values=c(NA, 'red'))
    

    (注意:相反,你可以 geom_bar(aes(...), col=ifelse(d$flag, 'red', NA)) 并跳过 scale_colour_manual 但是你没有得到一个传奇) .

    enter image description here

    如果要增加边框宽度,请在 geom_bar 中添加 lwd=<new line width> (在 aes 之外) .

相关问题