我有多个列表,我想用它来过滤数据框并使用ggplot进行绘图
列表包含列中的数据 - df $ old
我想递归地从列表中获取一个项目并使用相应的列表过滤数据,并使用带有与列表名称对应的标题的过滤列表绘制一个条形图
过滤步骤不起作用。我尝试了一堆没有运气的方法,我找不到这个问题
我觉得我想使用rlist,但也无法让它工作
使用的包 - dplyr,reshape2,ggplot2
在rnotebook工作
Row.names t1 t2 t3 t4 t5 old new
to_delete 10 -2 -8 12 10 g1 gr1
to_delete -5 18 11 -6 10 g2 gr2
.
.
.
lists <- c(a, b, c)
a <- c("g1", "g5", "g8")
b <- c("g2", "g3", "g9")
c <- c("g4", "g6", "g7")
for(i in lists){
print(i)
df_sub <- filter(df, grepl(paste(i, collapse="|"), old))
df_sub$Row.names <- NULL
df_sub <- melt(df_sub, id.vars=c("old", "new"))
p <- ggplot(data=df_sub, aes(x= old, y=value, fill = variable)) +
geom_bar(stat="identity", position = "dodge", width = 0.5) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
labs(title = paste(i," genes"), x = NULL, y = expression("log"["2"]*" fold change"), fill = "time vs shaking") +
theme(axis.text.x = element_text(size = 8, angle = 45, hjust = 1, vjust = 1)) +
theme(plot.title = element_text(hjust = 0.5)) +
scale_fill_manual(values=c("999999", "E69F00", "56B4E9", "red", "black"))
print(p)
}