假设我有两个样本,我想以图形方式进行比较。一种方法是将一个放在另一个上面,如下所示:
x1 = rnorm(100)
x2 = rnorm(100, mean=2)
plot(density(x1))
lines(density(x2), col="red")
我想知道是否有一种绘制x2的方法,使得绘图与x1的绘图共享相同的轴,除了它是颠倒的,如下图所示。如果有任何方法不涉及下载其他软件包,那将是特别好的。
谢谢!
答案 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")
答案 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))
答案 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)
给出这个情节:
此图表显示在R graph gallery
中