如何绘制镜像图? (两个图共享相同的x轴,但一个是倒置的 - 在轴下方)

时间:2012-09-14 08:53:51

标签: r plot

假设我有两个样本,我想以图形方式进行比较。一种方法是将一个放在另一个上面,如下所示:

x1 = rnorm(100)
x2 = rnorm(100, mean=2)
plot(density(x1))
lines(density(x2), col="red")

我想知道是否有一种绘制x2的方法,使得绘图与x1的绘图共享相同的轴,除了它是颠倒的,如下图所示。如果有任何方法不涉及下载其他软件包,那将是特别好的。

enter image description here

谢谢!

3 个答案:

答案 0 :(得分:4)

如果y轴包含零以下的值无关紧要,可以使用:

x1 <- rnorm(100)
x2 <- rnorm(100, mean=2)
dens1 <- density(x1)
dens2 <- density(x2)
dens2$y <- dens2$y * -1
plot(dens1, 
     ylim = range(c(dens1$y, dens2$y)),
     xlim = range(c(dens1$x, dens2$x)),
     main = "",
     xlab = "")
lines(dens2, col = "red")

densitys

答案 1 :(得分:3)

您可以使用参数ylim=(...)(或xlim=(...))并以相反的顺序指定限制来反转绘图的轴。

例如:

layout(matrix(1:2, ncol=1))
par(mai=c(0.5, 1, 0.5, 1))

plot(c(-6, 6), 0:1, type="n", ylim=c(0, 1), xlab="", ylab="")
lines(density(x1), ylim=c(0, 1))

plot(c(-6, 6), 0:1, type="n", ylim=c(1, 0), xlab="", ylab="")
lines(density(x2), col="red", ylim=c(1, 0))

enter image description here

答案 2 :(得分:0)

使用mar函数的par参数可以只获得一个x轴。 R代码看起来像这样:

   #Create Data
    x1 = rnorm(100)
    x2 = rnorm(100, mean=2)

    #Make the plot
    par(mfrow=c(2,1))
    par(mar=c(0,5,3,3))
    plot(density(x1) , main="" , xlab="", ylim=c(0,1) , xaxt="n", las=1 , col="slateblue1" , lwd=4 )
    par(mar=c(5,5,0,3))
    plot(density(x2) , main="" , xlab="Value of my variable", ylim=c(1,0) , las=1 , col="tomato3" , lwd=4)

给出这个情节:

1

此图表显示在R graph gallery