R:组合点阵点和排序数据

时间:2011-12-05 14:30:47

标签: r lattice

要创建我的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

第一列是文件名,第二列是差异,第三列是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轴镜像数据文件中的顺序?

我遇到的另一个问题是合并这些情节。我怎样才能制作图表,以便我将图表放在一行但超过两列。左边是差异图,右边是RMSD图。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

我认为你的第一个问题与因素排序有关。这是一个常见的问题,但一旦你学会了因素使用的技巧,它就会变成一个(不错的)功能。这已经讨论了很多次,至少herehere

我不确定我理解你的第二个问题所有细节,但通常有两种策略。在基本图形中,您可以使用par参数mfrow来打开具有已定义的行/列的设备,您可以在其中绘制图形,例如: par(mfrow = c(2, 1))将绘制两行和一列的两个图。 par(mfrow = c(2,2))将为您提供以2x2网格布局的图表。您还可以考虑替代方案,layoutsplit.screen

在网格图形(想想格子和ggplot2)中,方法是不同的。您可以分别使用|facet_gridlatticeggplot2绘制网格中的多个图表。