2013-05-17 27 views
12

私は画像の上部にあるようなdata.frameを持っています。data.frameからbarplotを作成します

画像の下部にあるようなバープロットを作成する可能性はありますか?ここで、あなたはASCII出力を望んでいないことを、仮定し

enter image description here

+0

アスキー出力を意味する場合は、 'txtplot'パッケージを試してみてください。 –

+0

申し訳ありません、これは単なる例でした)私はbarplot関数で得たようなプロットを持っています – ElPatzo

+0

おそらくあなたの質問のタイトルを変更したいですか?実際には、data.frameからバープロットを作成したいのですが、その逆もありません。 – Beasterfield

答えて

19

mydf <- data.frame(X1=c(A=2, B=4, C=1), X2=c(3,2,NA), X3=c(4,1,NA)) 
barplot(t(as.matrix(mydf)), beside=TRUE) 

axisへの追加の呼び出しを使用するには、より多くの問題のようにラベル付けを与えることができます。

+2

これは容認された答えでなければなりません - なぜこのような単純な作業を行うために2つのライブラリを使用しますか? –

+0

大きなdfを使用している場合は、行列に変換してから表に変換するとオーバーヘッドが大きくなる可能性があります。 – wordsforthewise

+0

@ wordsforthewise、dfが非常に大きいので、このオーバーヘッドが目立つ(問題はもちろんですが)場合は、バープロットはおそらくそれの最良の視覚化ではありません。 –

14

ggplot2を使用したソリューションです。詳細については

# load/generate your data 
mydf <- data.frame(X1 = c(2,4,1), X2 = c(3,2,NA), x3 = c(4,1,NA), row.names=c("A","B","C")) 
mydf$Category <- row.names(mydf) 

# bring your data to long format as needed by ggplot 
library(reshape2) 
mydf.molten <- melt(mydf, value.name="Count", variable.name="Variable", na.rm=TRUE) 

# plot and facet by categories 
library(ggplot2) 
qplot(data=mydf.molten, x = Variable, y = Count, geom="bar", stat = "identity") + facet_wrap("Category") 

enter image description here

、私は相談することをお勧めしたいですggplot2 manual、特に約geom_barおよびfacet_wrapに関する章。あなたは、単にこれを行うことができますベースのグラフィックスを使用して

+0

私のために働いた!ありがとうございました! – ElPatzo

+0

'> mydf.molten < - melt(mydf、value.name =" Count "、variable.name =" Variable "、na.rm = TRUE) id変数としてカテゴリを使用 > エラー:stat_count()は、美的には使用しないでください。エラー:stat_count()を使用してはなりません。 さらに:警告メッセージ: 'stat'は非推奨です' –

+0

@Mona Jalal; 'ggplot2'は2013年から変更されました。特にverからアップグレードしたときに変更されました。 1.xxxから2.xxx。 – cuttlefish44

関連する問題