R ggplot:多个直方图为一个

R ggplot:多个直方图为一个,r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,我想用ggplot绘制几个生物信息学工具的基准测试结果。我不希望所有的条都在同一个图形上,而不是每个工具都有一个图形。我已经有了一个LibreOffice的输出(见下图),但我想用ggplot重新做它 目前,我为每个工具都编写了此类代码(第一个工具的示例): 谢谢 也许这能帮你找到正确的方向: # sample data df = data.frame(Orthofinder=c(1,2,3), FastOrtho=c(2,3,4), POGs_no_para=c(1,2,2)) libr

我想用ggplot绘制几个生物信息学工具的基准测试结果。我不希望所有的条都在同一个图形上,而不是每个工具都有一个图形。我已经有了一个LibreOffice的输出(见下图),但我想用ggplot重新做它

目前,我为每个工具都编写了此类代码(第一个工具的示例):


谢谢

也许这能帮你找到正确的方向:

# sample data
df = data.frame(Orthofinder=c(1,2,3), FastOrtho=c(2,3,4),   POGs_no_para=c(1,2,2))

library(reshape2)
library(dplyr)

# first let's convert the dataset: Convert to long format and aggregate.
df = melt(df, id.vars=NULL)
df = df %>% group_by(variable,value) %>% count()

# Then, we create a plot.
ggplot(df, aes(factor(value), n, fill = variable)) + 
  geom_bar(stat="identity", position = "dodge") + 
  scale_fill_brewer(palette = "Set1")
关于设置绘图格式的文档已经足够多了,所以我将把它留给您;)希望这有帮助

编辑:由于在我键入答案时问题被更改为使用不同的数据集作为源,因此下面是修改后的代码:


也许这可以帮助您朝着正确的方向前进:

# sample data
df = data.frame(Orthofinder=c(1,2,3), FastOrtho=c(2,3,4),   POGs_no_para=c(1,2,2))

library(reshape2)
library(dplyr)

# first let's convert the dataset: Convert to long format and aggregate.
df = melt(df, id.vars=NULL)
df = df %>% group_by(variable,value) %>% count()

# Then, we create a plot.
ggplot(df, aes(factor(value), n, fill = variable)) + 
  geom_bar(stat="identity", position = "dodge") + 
  scale_fill_brewer(palette = "Set1")
关于设置绘图格式的文档已经足够多了,所以我将把它留给您;)希望这有帮助

编辑:由于在我键入答案时问题被更改为使用不同的数据集作为源,因此下面是修改后的代码:


我看到您同时编辑了您的问题以处理不同的数据集。我的解决办法是针对你对这个问题最初的措辞。你认为你可以处理这个问题吗?我看到你同时编辑了你的问题以处理不同的数据集。我的解决办法是针对你对这个问题最初的措辞。你认为你可以用它吗?是的,对不起,我改变了,因为我突然调试了“geom_text”的东西,但是使用了第二个数据集:)。我来试试。顺便说一句,当您使用dput()共享数据时,创建一个工作示例要容易得多。现在,我们很难复制您的输入数据。它很有效,谢谢:)。只有一个问题:当我添加geom_文本(aes(label=value))时,这些值被堆叠在一起,而不是在它们对应的条的顶部……太棒了!对于你的新问题,也许可以在这里找到答案:如果你觉得有帮助,请接受我的答案好吗?也许她将来也会遇到同样的问题。谢谢是的,对不起,我更改了,因为我突然调试了“geom_text”的东西,但是使用了第二个数据集:)。我来试试。顺便说一句,当您使用dput()共享数据时,创建一个工作示例要容易得多。现在,我们很难复制您的输入数据。它很有效,谢谢:)。只有一个问题:当我添加geom_文本(aes(label=value))时,这些值被堆叠在一起,而不是在它们对应的条的顶部……太棒了!对于你的新问题,也许可以在这里找到答案:如果你觉得有帮助,请接受我的答案好吗?也许她将来也会遇到同样的问题。谢谢
# sample data
df = data.frame(Orthofinder=c(1,2,3), FastOrtho=c(2,3,4),   POGs_no_para=c(1,2,2))

library(reshape2)
library(dplyr)

# first let's convert the dataset: Convert to long format and aggregate.
df = melt(df, id.vars=NULL)
df = df %>% group_by(variable,value) %>% count()

# Then, we create a plot.
ggplot(df, aes(factor(value), n, fill = variable)) + 
  geom_bar(stat="identity", position = "dodge") + 
  scale_fill_brewer(palette = "Set1")
df = data.frame(Nb_species = c(4,5,6,7),  OrthoFinder=c(125,142,100,110), FastOrtho=c(100,120,130,140))

library(reshape2)
library(dplyr)
df = melt(df, id.vars="Nb_species")

ggplot(df, aes(factor(Nb_species), value, fill = variable)) + 
  geom_bar(stat="identity", position = "dodge") + 
  scale_fill_brewer(palette = "Set1")