亲爱的Stackoverflow用户,
我想使用ggplot创建组条形图。这是样本数据
> data
X0h X3h X6h X9h X12h
aldehyde_dehydrgenase -0.7970 -0.7423 -0.5425 -0.6721 -0.6804
lactate_dehydrogenase 0.6737 0.5131 0.5063 0.4767 0.3628
aldehyde_reductase Akr1 0.4701 0.5694 0.2096 0.2696 0.2492
data <- read.csv("fig2.csv", header=T, row.names=1)
mat.melted <- melt(as.matrix(data), value.name = "expression", varnames=c('Enz', 'TimePoint'))
ggplot(mat.melted, aes(x=Enz, y=TimePoint, fill=expression)) + geom_bar(position=position_dodge(), stat="identity", colour='black')
这是我从上面得到的 enter image description here
条形应如下所示(使用相同数据的条形图功能创建)
enter image description here
答案 0 :(得分:1)
tidyverse包中的gather()命令可以使这更容易一些。 Tidyverse也加载了ggplot2。请参阅下面的代码。它似乎复制了您想要的输出。
library(tidyverse)
data <- read.csv("fig2.csv", header=T, row.names=1
### Melt the data using gather ###
graph <- data %>%
gather(hour, expression, -NameOfFirstColumn) %>%
arrange(name)
### Plot the data using ggplot2 ###
ggplot(graph, aes(x = name, y = expression, fill = hour)) +
geom_bar(stat = "identity", position = "dodge")