14

私は次のデータを持っています

       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フィールド(2つのバー)の対数スケールを表すようにします。

私がオンラインでチェックしたすべてのソリューション/例では、同様のデータが3列のレイアウトに配置されていました。グループ化された棒グラフを生成するために必要なデータの使用方法がわかりません。または、このデータをRおよびggplot互換のデータ形式に変換する方法がある場合(行が多い巨大なファイルであるため、手動で変換することはできません) 。

編集 :

gncsソリューションを使用して生成されたグラフ

ここに画像の説明を入力してください

4

4 に答える 4

35

要求に応じて、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) = 0ggplot2はそれをゼロの高さのバーとして扱い、何もプロットしませんがbarplot、小さなスタブをプロットします(私の意見では少し誤解を招きます)。

于 2012-04-18T16:42:04.083 に答える
7

私は問題を理解していると思います、そしてこれは私が提案するものです(短期-オプション):

data <- read.table("data.txt", header=TRUE)
subset <- t(data.frame(data$Rtime, data$Btime))
barplot(subset, legend = c("Rtime", "Btime"), names.arg=data$Input, log="y", beside=TRUE)

それはあなたが望むものですか?それはちょっと汚いです、しかしそれは仕事をします。

更新:コードが修正されました。

于 2012-04-18T15:37:06.440 に答える
2

ジョランの答えは私を大いに助けてくれましたが、次のように ggplot ステートメントでstat="identity"を使用する必要がありました:

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

私のRのバージョンは3.2.2で、ggplot2のバージョンは1.0.1です

ありがとう。

于 2016-02-14T18:32:09.213 に答える