我有两个 Dataframe :
df1 <- data.frame(name = rep(LETTERS[1:5], each = 5), age = 1:25)
df2 <- data.frame(name = rep(LETTERS[1:5], each = 5), age = c(rep(1,5), rep(5,5), 1,12,3,2,1,1:5,6:10))
我想画出这样的水平条形图:
df1 %>%
mutate(name = fct_reorder(name, age)) %>%
ggplot( aes(x = name, y = age)) +
geom_bar(stat = "identity", fill = "#74D055FF", alpha = .6, width = .6) +
coord_flip() +
theme_bw()
df2 %>%
mutate(name = fct_reorder(name, age)) %>%
ggplot( aes(x = name, y = age)) +
geom_bar(stat = "identity", fill = "#481568FF", alpha = .6, width = .6) +
coord_flip() +
theme_bw()
我想在同一张图中显示它们:应该有一条垂直线对应age = 0
,然后紫色条应该在一侧,绿色条在另一侧(当然它随后将仅基于df1
或df2
中的age
被排序,因为age
的降序在两个 Dataframe 中是不同的)。我不知道如何调用这种类型的图以及如何处理它。
1条答案
按热度按时间bfnvny8b1#
一种选择是将数据集绑定到一个 Dataframe 中,并添加一个标识符列,我使用
dplyr::bind_rows
来标识该列,然后可以将标识符Map到fill
aes上,并通过scale_fill_manual
设置颜色。此外,我使用count
聚合数据,而不是依赖于堆栈: