2012-09-14 59 views
0

假設我有兩個樣本,我想用圖形進行比較。做到這一點的方法之一是奠定一個比另一個象下面這樣:如何繪製鏡像圖? (兩個圖共享相同的x軸,但一個圖顛倒 - 軸下)

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

然而,我不知道是否有積X2這樣的情節共享同一軸線X1的情節的方式,除了它是顛倒,如下圖。如果有任何方法不涉及下載額外的軟件包,那將會特別好。

enter image description here

謝謝!

回答

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

+0

這就是我已經走了 - 你可以通過'ylim = range(c(dens1 $ y,-dens2 $ y))'和'lines(dens2 $ x,-dens2 $ y )'...甚至'x2 < - -rnorm(100,m = 2)' –

+0

右,'行(dens2 $ x,-dens2 $ y)'會更簡單,但'x2 < - -rnorm(100 ,m = 2)'不起作用,因爲密度總是正的,與變量的值無關。 –

+0

是的,抱歉不關注'密度' –

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

+0

你知道的方式來兩個地塊,使得結合他們共享一個軸?我喜歡改變ylim方向的簡單性。永遠不會想到這一點。 – Alex

0

使用可以只獲得一個x軸參數par函數。將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

相關問題