1

这是一个可重现的样本数据集,它具有基于 的连续填充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')))

回顾一下:

  1. 我想在flag = TRUE不改变已经由Amount.

  2. 我希望图例flag = TRUE用红色(或任何匹配的颜色)来反映这一点。

我无法通过浏览网络找到适用的解决方案,因此非常感谢任何想法或建议!

4

1 回答 1

3

使用colour=flagcolour是轮廓,geom_bar而填充是填充)。然后添加+ scale_colour_manual(values=c(NA, 'red'))where NAis used if flagis false (noborder) and 'red' is used if flagis true.

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但你没有得到传说)。

在此处输入图像描述

如果要增加边框宽度,lwd=<new line width>请在您的geom_bar(外部aes)中添加一个。

于 2015-07-24T02:11:48.670 回答