我想使用 生成水平分组条形图ggplot2
。数据按 分组Name
,每个分组Name
有 1Color
和 2 School
,应使用不同的透明度 ( Alpha
) 进行可视化。我已将所需的所有数据放入数据框 ( test
) 中。
library(tidyverse)
test <- structure(list(Name = c("Jean", "Jean", "Mike", "Mike", "Ruth",
"Ruth", "Elia", "Elia", "Jess", "Jess"),
School = c("A", "B", "A", "B", "A", "B", "A", "B", "A", "B"),
Value = c(11L, 8L, 15L, 16L, 27L, 22L, 0L, 4L, 0L, 3L),
Color = c("#E55C30FF", "#E55C30FF","#FBB91FFF", "#FBB91FFF", "#FCFFA4FF", "#FCFFA4FF", "#C7E8AC", "#C7E8AC", "#228B22", "#228B22"),
Alpha = c(0.9, 0.4, 0.9, 0.4,0.9, 0.4, 0.9, 0.4, 0.9, 0.4)),
row.names = c(NA, -10L), class = "data.frame")
test
Name School Value Color Alpha
1 Jean A 11 #E55C30FF 0.9
2 Jean B 8 #E55C30FF 0.4
3 Mike A 15 #FBB91FFF 0.9
4 Mike B 16 #FBB91FFF 0.4
5 Ruth A 27 #FCFFA4FF 0.9
6 Ruth B 22 #FCFFA4FF 0.4
7 Elia A 0 #C7E8AC 0.9
8 Elia B 4 #C7E8AC 0.4
9 Jess A 0 #228B22 0.9
10 Jess B 3 #228B22 0.4
我正在努力为每个组映射正确的颜色。这是我到目前为止的代码,它实现了分组、水平绘图、透明度和灰色轮廓。但我无法将每种颜色映射到每个组。
ggplot(test,
aes(y = Name, x = Value, fill = School, alpha = Alpha)) +
geom_bar(stat = "identity", position = "dodge", color = "grey50") +
scale_alpha_identity()
fill = df$Color
我尝试在里面添加geom_bar()
,我也尝试将其更改为一个因子(fill = as.factor(df$Color)
),但是条形图堆积起来而不是保持分组。我仍然难以理解ggplot2
语法,我想我在这里忽略了一些简单的东西......
编辑:我想更改的是条形的填充,其中每个条形Name
应该有自己的填充(根据其Name
本身,如 中指定的df$Color
),然后使用不同的透明度来区分School
。
使用
scale_alpha_manual
允许您将 alpha 值映射到学校(不使用alpha
数据框中的列)。问题是,既然所有条形图的颜色都不同,那么图例应该是什么样子?您可能必须为每个栏添加一个标签。