我有以下数据

       Input Rtime Rcost Rsolutions  Btime Bcost
1   12 proc.     1    36     614425     40    36
2   15 proc.     1    51     534037     50    51
3    18-proc     5    62    1843820     66    66
4    20-proc     4    68    1645581 104400    73
5 20-proc(l)     4    64    1658509  14400    65
6    21-proc    10    78    3923623 453600    82

我想从此数据创建一个分组的条形图,以便x轴包含Input字段(作为组),y轴代表Rtime和Btime字段的对数刻度(两个条形)。

我在网上检查的所有解决方案/示例都将相似的数据放入三列布局中。我不知道如何使用生成分组条形图所需的数据。或者,如果有一种方法可以将这些数据转换(手动转换不是一种选择,因为它是一个有很多行的大文件),转换为 R ggplot 兼容的数据格式。

编辑:

使用GNCS解决方案生成的图形

最佳答案

根据要求,还使用 reshape2 ggplot2 解决方案:

library(reshape2)

df <- read.table(text = "       Input Rtime Rcost Rsolutions  Btime Bcost
1   12-proc.     1    36     614425     40    36
2   15-proc.     1    51     534037     50    51
3    18-proc     5    62    1843820     66    66
4    20-proc     4    68    1645581 104400    73
5 20-proc(l)     4    64    1658509  14400    65
6    21-proc    10    78    3923623 453600    82",header = TRUE,sep = "")

dfm <- melt(df[,c('Input','Rtime','Btime')],id.vars = 1)

ggplot(dfm,aes(x = Input,y = value)) +
    geom_bar(aes(fill = variable),stat = "identity",position = "dodge") +
    scale_y_log10()

请注意此处的样式差异,因为log(1) = 0 ggplot2 将其视为零高度的条形图,并且不绘制任何内容,而barplot则绘制了一些 stub (在我看来,这有点误导)。

关于r - 在R中创建多列数据的分组条形图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10212106/

10-12 17:25
查看更多