要创建我的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图。
答案 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)
我认为你的第一个问题与因素排序有关。这是一个常见的问题,但一旦你学会了因素使用的技巧,它就会变成一个(不错的)功能。这已经讨论了很多次,至少here和here。
我不确定我理解你的第二个问题所有细节,但通常有两种策略。在基本图形中,您可以使用par
参数mfrow
来打开具有已定义的行/列的设备,您可以在其中绘制图形,例如: par(mfrow = c(2, 1))
将绘制两行和一列的两个图。 par(mfrow = c(2,2))
将为您提供以2x2网格布局的图表。您还可以考虑替代方案,layout
和split.screen
。
在网格图形(想想格子和ggplot2)中,方法是不同的。您可以分别使用|
或facet_grid
为lattice
和ggplot2
绘制网格中的多个图表。