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

第一列是文件名,第二列是差异,第三列是 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 图。

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

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

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

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

于 2011-12-05T14:43:07.950 回答