0

異なる数の列を含む2つのテーブルからのデータを含む素敵な棒グラフを取得する方法を理解できないようです。

問題のテーブルは次のようなものです(最後からいくつかのデータを切り取った):

> tab1
   1    2    3    6    8   31
5872 1525  831  521  299    4

> tab2
   1    2    3    4   22
7874  422    2    5    1

列の名前とサイズが異なることに注意してください。これらのテーブルの1つを実行barplot()すると、希望するプロットが表示されます(列名をX軸、頻度をY軸で表示)。でも、この2つを並べて欲しいです。

コメントとして両方の変数を含み、最初の列に異なる行名(data.frame()merge())を含むデータフレームを作成するところまで到達しましたが、これをプロットすると、X軸はすべて間違っているようです。列を並べ替えようとすると、長さが異なるという例外が発生します。

コード:

combined <- merge(data.frame(tab1), data.frame(tab2), by = c('Var1'), all=T)
barplot(t(combined[,2:3]), names.arg = combined[,1], beside=T)

これはプロットを示していますが、すべてのラベルが存在するわけではなく、位置26の値は33の後にプロットされています。

このプロットを機能させる簡単な方法はありますか?ggplot2ソリューションがいいでしょう。

4

1 に答える 1

2

すべてのデータを1つのデータフレームに入れることができます(例のように)。

df<-data.frame(group=rep(c("A","B"),times=c(2,3)),
   values=c(23,56,345,6,7),xval=c(1,2,1,2,8))
  group values xval
1     A     23    1
2     A     56    2
3     B    345    1
4     B      6    2
5     B      7    8

次にggplot()、withgeom_bar()を使用してデータをプロットできます。

ggplot(df,aes(xval,values,fill=group))+
  geom_bar(stat="identity",position="dodge")
于 2013-03-13T09:59:34.867 に答える