在边距中绘制任意线条,R plot 有几个面板

Draw arbitrary lines in margins, R plot with several panels

我有这个代码

par(mfrow = c(1,2))
plot(1:5, 5:1)

这是什么情节

我希望能够在整个绘图中添加随机线条(例如,参见红线)。它们可能在图本身、内边距或外边距上。

我不想使用 ggplot2。我觉得我需要使用 grid,但我不确定从哪里开始。

不难。添加一个新的白色面板(遍布整个地块),您可以通过 xpd = TRUE

绘制您想要的线段

这是我的例子;

set.seed(111)
random_segments <- data.frame(x0 = runif(5, 0, 2), y0 = runif(5, 0, 2), 
                             x1 = runif(5, 0, 2), y1 = runif(5, 0, 1))

par(mfrow = c(1,2))
plot(1:5, 5:1)
plot(11:20, 20:11)
par(new = T, mfrow = c(1, 1))
plot(1, type = "n", axes = F, ann = F)
with(random_segments, segments(x0, y0, x1, y1, xpd = TRUE))

[编辑]

您可以制作带有您想要的坐标且没有边距的白色面板(您不需要使用 xpd = TRUE 因为没有边距)。

set.seed(111)
random_segments <- data.frame(x0 = runif(5, 0, 1), y0 = runif(5, 0, 1), 
                             x1 = runif(5, 0, 1), y1 = runif(5, 0, 1))

def_par <- par(no.readonly = TRUE)
par(mfrow = c(1,2))
plot(1:5, 5:1)
plot(11:20, 20:11)
par(new = T, mfrow = c(1, 1), mar = c(0,0,0,0))
plot(1, type = "n", axes = F, ann = F, xaxs = "i", yaxs = "i", 
     xlim = c(0, 1), ylim = c(0, 1))
with(random_segments, segments(x0, y0, x1, y1))
points(c(0, 0, 1, 1), c(0, 1, 0, 1), col = "red")  # to check coordinate
par(def_par)  # recover   

墨鱼的好解决方案! 关键是 xpd = TRUE (允许在绘图区域外绘图) 由于我打字,这里是...

dev.off()
par(mfrow = c(1,2))
par(xpd=TRUE)
plot(1:5, 5:1)
lines(x=-1:2,y=-2:1,col="red")
lines(x=-1:1,y=-1:1,col="red")
lines(x= 1:3,y= 4:2,col="red")
lines(x= 4:7,y= 5:8,col="red")
lines(x= 2:4,y= 5:7,col="red")
# Control the length & slope of lines
plot(1:5, 5:1)
lines(x= -1:1,y=2:4,col="red")
lines(x=rep(1,3),y=0:2,col="red")
lines(x= 1:3,y=rep(6,3),col="red")
lines(x= 3:6,y= 2:5,col="red")
lines(x=c(4,4.2,4.4),y=4:6,col="red")