并排合并两个地块

时间:2020-04-03 16:13:59

标签: r plot

我需要并排放置两个地块。因此,这不是一个艰苦的练习,除了:

  1. 我想要并且需要使用基本图形
  2. 这些地块应无缝地相邻放置。

这是我如何解决的一个例子

x2 <- seq(1.9, 7.3, length.out=10)
x1 <- seq(0.2, 5.8, length.out=10)
y1 <- rnorm(10)
par(mfrow=c(1,2))
par(mar=c(5,4,4,0))
plot(x1, y1, type="l", bty="n", xlim=range(x1), ylim=c(-2, 2))
par(mar=c(5,0,4,2))
plot(x2, y1, type="l", bty="n", xlim=rev(range(x2)), ylim=c(-2, 2), yaxt="n")

enter image description here

这是问题所在:我希望这两条线可以接触或几乎可以接触。如果轴是分开的,那就可以了。但这两幅图之间的距离应最小。理想情况下,我希望显示一条红色的垂直线,以显示图的两个部分的交汇处。

到目前为止,我还没有找到答案。

背景:我正在绘制一个基因组重排图,其中某些染色体的两个遥远部分融合在一起,其中一个反向,因此缩放比例不同。

2 个答案:

答案 0 :(得分:2)

xaxs = "i"添加到拳头par()中,即

par(mfrow = c(1, 2), xaxs = "i")

然后再次运行整个代码。

xaxs表示用于x轴的轴间隔计算方式。默认值为"r"(常规),它在两端将数据范围扩展4%。将其修改为"i"将使x轴适合原始数据范围。

enter image description here

答案 1 :(得分:2)

虽然@DarrenTsai的答案是绝对正确的,但您会发现x轴比例尺在具有不同mar参数时每个像素所占的值不同。我建议您考虑将它们绘制在一起,然后添加一个自定义轴。

x2 <- seq(1.9, 7.3, length.out=10)
x1 <- seq(0.2, 5.8, length.out=10)
y1 <- rnorm(10)
ValueTable <- data.frame(Foward = c(x1,max(x1) + (x2-min(x2))), Join = c(x1,rev(x2)))
plot(ValueTable$Foward,c(y1,rev(y1)),type = "l",xaxt="n",xlab = "",ylab = "Value")
axis(1, ValueTable$Foward[seq(1,nrow(ValueTable),by = 2)], labels=formatC(ValueTable$Join[seq(1,nrow(ValueTable),by = 2)],format = "f", digits = 2))
abline(v=max(x1))

enter image description here