7

この質問では、要約されていない表に従って棒グラフを並べ替えることについて質問します。少し状況が違います。これが私の元のデータの一部です:

experiment,pvs_id,src,hrc,mqs,mcs,dmqs,imcs
dna-wm,0,7,9,4.454545454545454,1.4545454545454546,1.4545454545454541,4.3939393939393945
dna-wm,1,7,4,2.909090909090909,1.8181818181818181,0.09090909090909083,3.9090909090909087
dna-wm,2,7,1,4.818181818181818,1.4545454545454546,1.8181818181818183,4.3939393939393945
dna-wm,3,7,8,3.4545454545454546,1.5454545454545454,0.4545454545454546,4.272727272727273
dna-wm,4,7,10,3.8181818181818183,1.9090909090909092,0.8181818181818183,3.7878787878787876
dna-wm,5,7,7,3.909090909090909,1.9090909090909092,0.9090909090909092,3.7878787878787876
dna-wm,6,7,0,4.909090909090909,1.3636363636363635,1.9090909090909092,4.515151515151516
dna-wm,7,7,3,3.909090909090909,1.7272727272727273,0.9090909090909092,4.030303030303029
dna-wm,8,7,11,3.6363636363636362,1.5454545454545454,0.6363636363636362,4.272727272727273

私はこれからいくつかの変数、つまりmqsとを必要とimcsし、それらによってグループ化されてpvs_idいるので、新しいテーブルを作成します。

m = melt(t, id.var="pvs_id", measure.var=c("mqs","imcs"))

これを棒グラフとしてプロットすると、MQSIMCSの相関関係を確認できます。

ggplot(m, aes(x=pvs_id, y=value)) 
+ geom_bar(aes(fill=variable), position="dodge", stat="identity")

ただし、結果のバーをMQSで左から右に降順で並べ替えたいと思います。もちろん、IMCS値はそれらと一緒に注文する必要があります。

どうすればそれを達成できますか?一般に、溶けたデータフレーム(ggplot2でのグラフ化に役立つようで、今日初めてそれを見つけたとき)を考えると、1つの変数の順序を指定するにはどうすればよいですか?

4

2 に答える 2

7

それはすべて作成中です

pvs_idファクターとそれに適切なレベルを提供する:

dat$pvs_id <- factor(dat$pvs_id, levels = dat[order(-dat$mqs), 2])

m = melt(dat, id.var="pvs_id", measure.var=c("mqs","imcs"))

ggplot(m, aes(x=pvs_id, y=value))+ 
    geom_bar(aes(fill=variable), position="dodge", stat="identity")

これにより、次のプロットが生成されます。

編集:pvs_idそれは数値だった ので、順序付けられた方法で扱われます。あなたが要因を持っているかのように、順序は想定されていません。したがって、数値ラベルpvs_idがある場合でも、実際には係数(公称値)です。そしてdat[order(-dat$mqs), 2]、負の符号を持つ順序関数は、変数に沿ってデータフレームを最大から最小に順序付けますmqs。ただし、変数のその順序に関心があるpvs_idので、2番目の列であるその列にインデックスを付けます。あなたがそれを引き裂くならば、あなたはそれがあなたに与えるのを見るでしょう:

> dat[order(-dat$mqs), 2]
[1] 6 2 0 5 7 4 8 3 1

今、あなたはそれをのlevels引数に供給しfactor、これはあなたが望むように因子を順序付けます。

于 2012-09-18T12:24:21.233 に答える