首页 文章

ggplot2堆积条形图:每个条形图是一种颜色,堆叠组使用alpha显示

提问于
浏览
2

假设我有以下堆积条形图:

# Load library
library(ggplot2) 

# Convert to factors
mtcars$gear <- factor(mtcars$gear)
mtcars$cyl <- factor(mtcars$cyl) 

# Plot results
p <- ggplot(data = mtcars, aes(x=gear, fill=cyl) ) + geom_bar() 
print(p)

这使,

enter image description here

在该图中,每个组(即 cyl )是不同的颜色,并且所有条都是相同的颜色方案 . 现在,我想要做的是将每个条形图作为单个不同的颜色,但这些组由alpha指定 . 例如,值为3,4和5的条形可分别为红色,蓝色和绿色,并且 cyl 值分别由1,0.75和0.5的α值描绘 . 这样,例如 gear 等于3的条形图都是相同的颜色(红色),但 cyl s显示为不同的阴影 . 这可能吗?

下面的代码实现了alpha值:

# Function for adding alphas
alpha_bar <- function(x)ifelse(x == 4, 1, ifelse(x == 6, 0.75, ifelse(x == 8, 0.5, NA)))

# Add alphas
mtcars$alpha <- alpha_bar(mtcars$cyl)

# Plot results
p <- ggplot(data = mtcars, aes(x=gear, fill=cyl, alpha = alpha) ) + geom_bar() 
print(p)

这使得alpha值正确 . 但是,如果我尝试用这样的东西改变每个条的颜色,

p <- p + scale_fill_manual(values = c("red", "blue", "green"))

它会更改 cyl 值的颜色而不是 gear 值 . 有什么建议?

1 回答

  • 3

    映射两个属性:

    p <- ggplot(data = mtcars, aes(x=gear, alpha=cyl,  fill=gear) ) + geom_bar() +
      scale_fill_manual(values = c("#CD3700", "#9ACD32", "#00868B"))
    p
    

    请记住,以这种方式映射alpha值被认为是对数据的可视化不良 . 为什么?只需看看 cyl 的指南 .

    enter image description here

相关问题