R:格子ドットプロットと順序データを組み合わせます

StackOverflow https://stackoverflow.com/questions/8386823

  •  28-10-2019
  •  | 
  •  

質問

dotplotを作成するには、次のテキストファイルを使用しています。

 ## 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

最初の列はファイル名、差の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プロットがあります。

役に立ちましたか?

解決

@ローマンのパート#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からのパネルごとのスケーリング、アーロンのLatticeExtra

他のヒント

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

すべての詳細についてあなたの2番目の質問を理解しているかどうかはわかりませんが、一般的に2つの戦略があります。ベースグラフィックスでは、使用できます par 口論mfrow グラフィックをプロットする定義された行/列を備えたデバイスを開くには、例: par(mfrow = c(2, 1)) 2つの行と1つの列で2つのプロットをプロットします。 par(mfrow = c(2,2)) 2x2グリッドでレイアウトされたグラフが表示されます。また、代替案を考慮することもできます。 layoutsplit.screen.

グリッドグラフィックス(latticeとggplot2を考える)では、アプローチは異なります。グリッドで複数のグラフをプロットできます。 | また facet_grid 為に latticeggplot2, 、 それぞれ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top