3

ドットプロットを作成するために、次のテキスト ファイルを使用しています。

 ## filename  difference    RMSD
    1bso.pdb         1.0  0.5645
 1cj51.9.pdb         2.0  3.5596
 1cj51.1.pdb         3.0  3.5573
    3qzj.pdb         3.0  0.8302
    1bsy.pdb         4.0  0.5387
 1cj51.5.pdb         8.0  3.9864
    2gj5.pdb        10.0  0.8446
1cj51.10.pdb        11.0  3.5914
    1uz2.pdb        12.0  1.7741
    2blg.pdb        12.0  0.5449

1 列目はファイル名、2 列目は差分、3 列目は RMSD です。データは順序付けされているため、差は昇順です。

次のコマンドを使用して、個々のドット プロットを作成できます。

# This plots the difference
library(lattice)
data <- read.table("~/Documents/Beta_test_area/pa.txt", header=F, sep="\t")
dotplot(V1~V2, xlim=c(0, 150), xlab="CCS Difference", data=data)

# This plots the RMSD
dotplot(V1~V3, xlim=c(0, 5), xlab="RMSD", data=data)

グラフでは、Y 軸のデータはファイル名順に並べられており、データはテキスト ファイルのようにプロットされていません。データ ファイルの順序を反映するように Y 軸を並べ替えるにはどうすればよいですか?

私が抱えている他の問題は、プロットを組み合わせることです。プロットを 1 行に 2 列以上にするにはどうすればよいですか。左が差分プロット、右が RMSD プロットです。

4

2 に答える 2

3

@Romanのパート#1は正しいです。これは、希望どおりに注文するための少し滑らかな方法です。

dat <- read.table(textConnection("
filename    diff RMSD
1bso.pdb    1.0 0.5645
1cj51.9.pdb 2.0 3.5596
1cj51.1.pdb 3.0 3.5573
3qzj.pdb    3.0 0.8302
1bsy.pdb    4.0 0.5387
1cj51.5.pdb 8.0 3.9864
2gj5.pdb    10.0    0.8446
1cj51.10.pdb    11.0    3.5914
1uz2.pdb    12.0    1.7741
2blg.pdb    12.0    0.5449"),
           header=TRUE)
dat <- transform(dat,filename=factor(as.character(filename),
                       levels=filename))

パッケージのgrid.arrange関数は、gridExtra格子プロットを配置するのに便利です:

library(lattice)
d1 <- dotplot(filename~diff, xlim=c(0, 150), xlab="CCS Difference", data=dat)

# This plots the RMSD
d2 <- dotplot(filename~RMSD, xlim=c(0, 5), xlab="RMSD", data=dat)

library(gridExtra)
grid.arrange(d1,d2,nrow=1)

または(@Aaronから):

library(latticeExtra)
c(d1,d2)

または、@Roman が提案したように、小さな倍数を作成できます。

library(reshape)
m <- melt(dat)
dotplot(filename~value|variable,
       scales=list(x=list(relation="free")), xlim=list(c(0,150), c(0,5)),
       data=m)

または

library(ggplot2)
g1 <- qplot(value,filename,data=m)+
  facet_grid(.~variable,scale="free")+theme_bw()+
  opts(panel.margin=unit(0,"lines"))

ここでは、目に見えないポイントを適切に追加しようとするような厄介なことをする以外に、パネルごとに x 軸の制限を設定する方法が本当にわかりません。

編集:Josh O'Brienのパネルごとのスケーリング、AaronのlatticeExtra

于 2011-12-05T14:59:03.853 に答える
2

あなたの最初の質問は因子の順序付けに関連していると思います。これはよくある問題ですが、要素が使用するトリックを学ぶと、それは (良い) 機能になります。これは、少なくともここここで何度も議論されてきました。

あなたの 2 番目の質問をすべての詳細まで理解しているかどうかはわかりませんが、一般的には 2 つの戦略があります。基本グラフィックスでは、par引数mfrowを使用して、グラフィックスをプロットする行/列が定義されたデバイスを開くことができます。たとえばpar(mfrow = c(2, 1))、2 つのプロットを 2 行 1 列でプロットします。par(mfrow = c(2,2))2x2 グリッドに配置されたグラフが表示されます。layout代替案を検討することもできますsplit.screen

グリッド グラフィック (格子と ggplot2 を考えてください) では、アプローチが異なります。|またはfacet_gridforlatticeおよびをそれぞれ使用して、多数のグラフをグリッドにプロットできますggplot2

于 2011-12-05T14:43:07.950 に答える