繁体   English   中英

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

[英]ggplot2 stacked bar chart: each bar is one colour, stacked groups are shown using alpha

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

# 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)

这使,

在此处输入图片说明

在该图中,每个组(即cyl )是不同的颜色,所有条形都是相同的配色方案。 现在,我想做的是将每个条形设置为单一的不同颜色,但是这些组由alpha表示。 例如, gear值为3、4和5的条分别可以是红色,蓝色和绿色,而cyl值分别由alpha值1、0.75和0.5来描述。 这样,例如等于3的gear的条都具有相同的颜色(红色),但是cyl显示为不同的阴影。 这可能吗?

以下代码实现了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值。 有什么建议么?

映射两个属性:

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

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM