我有一个这样的df:
library(dplyr)
library(data.table)
library(ggplot2)
library(scales)
Events <- c("A_1","A_2","A_3","B_1","B_2","B_3","C_1","C_2","C_3","D_1","D_2","D_3","E_1","E_2","E_3")
Percentage_Occur <- c(4.6,6.5,1.3,3.4,6.6,5.5,7.8,2.2,2.4,2.1,6.6,5.9,4.9,11.1,4.3)
df1 <- data.frame(Events,Percentage_Occur)
我正在尝试将这些子事件组合到单个类别中以确定前 3 个事件,因此我这样做:
df2 <- data.frame(df1)
df2$Events <- gsub("*_.*", "\\1", df2$Events)
df2 <- df2 %>% group_by(Events) %>% summarise_each(funs(sum(., na.rm = T)))
df2 <- df2[ order(-df2[,2]), ]
ggplot(df2, aes(reorder(Events,Percentage_Occur), Percentage_Occur)) +
geom_bar(stat = "identity") + coord_flip() +
xlab("Events")
一旦我能够可视化前 3 个事件(在这种情况下它们是 E、B、D),我想将这些前 3 个事件的子事件绘制在这样的单独图中。
我通过提取顶级事件的子事件来手动完成此操作。由于这是一个示例数据集,因此我能够做到。我想将逻辑应用于我拥有的更大的数据集。
我想要的只是确定顶级事件(我能够做到),然后以某种方式以编程方式为这些顶级事件绘制相应的子事件,而无需手动查看数据框并提取它。原因之一是这些事件会随着时间而变化,并且希望每 2 小时运行一次这种类型的逻辑,以查看到达顶部的任何新事件。请提供您对此的意见,并帮助我继续前进。
注意:我也想要更好的颜色。