2016-11-17 52 views
1

我試圖結合三個plot.hist沒有horizal,所以我使用barplot.But時使用相同的區域來彩色barplot和point.It不能對齊在一起。我試過設置barplot範圍(xlim = c(-3,3)),但它只是顯示barplot的一部分。我如何可以設置相同的X軸範圍,這些情節,顏色區域可以對齊點情節的虛線lines.Here是我的代碼:x軸在barplot無法對齊到其他地塊

```

def.par <- par(no.readonly = TRUE) # save default, for resetting... 
x <- pmin(3, pmax(-3, rnorm(5000))) 
y <- pmin(3, pmax(-3, rnorm(5000))) 
xhist <- hist(x, breaks=1000, plot=FALSE) 
yhist <- hist(y, breaks=1000, plot=FALSE) 
cut1 <- cut(xhist$density, c(-Inf,-1.8,1.8,Inf)) 
cut2 <- cut(yhist$density, c(-Inf,-2.9,2.9,Inf)) 
top <- max(c(xhist$density, yhist$density)) 
xrange <- c(-3,3) 
yrange <- c(-3,3) 
nf <- layout(matrix(c(2,0,1,3),2,2,byrow=TRUE), c(3,1), c(1,3), TRUE)#layout.show(nf)ZSSS 
par(mar=c(3,3,0,0)) 
plot(x, y, xlim=xrange, ylim=yrange, type="p",pch=".",cex=1,xlab="T1", ylab="T2",col="grey") 
abline(h=0.5,lty=2,lwd=1.5,col="black") 
abline(v=-2.5,lty=2,lwd=1.5,col="black") 
abline(v=2.5,lty=2,lwd=1.5,col="black") 

par(mar=c(0,3,1,1)) 

breaks <- c(-Inf, -2.5, 2.5, Inf) 
col1 <- c("blue", "grey", "red")[findInterval(xhist$breaks, vec=breaks)] 
barplot(xhist$density, axes=TRUE,ylab="T3",border=col1) 

par(mar=c(3,0,1,1)) 
col2 <- c("grey", "red")[(yhist$breaks >= 0.5) + 1] 
barplot(yhist$density, axes=TRUE, xlab="T4",space=0, horiz=TRUE,border=col2) 

```

回答

1

第二par(mar=c(bottom, left, up, right))需要與plot()相同的左右邊距,所以當plot()的邊距爲c(3,3,0,0)時,它是par(mar=c(0,3,1,0))。 3rd需要相同的底部和上升的餘量,所以它是par(mar=c(3,0,0,1))

[響應於該評論]
mgp = c(axis_title, axis_label, axis_line)默認params爲c(3, 1, 0)。這意味着軸標題寫在邊界3-4上,所以當mar = c(3, 3, 0, 0)時,軸標題在圖表之外。您可以通過增加mar和/或減少mgp來解決此問題。

我覺得這個組合可以做出很酷的圖表,比如;

par(mar = c(3.5, 3.5, 0, 0), mgp = c(2.5, 1, 0)) # for plot() 
par(mar = c(0, 3.5, 1, 0), mgp = c(2.5, 1, 0)) # for 1st barplot() 
par(mar = c(3.5, 0, 0, 1), mgp = c(2.5, 1, 0)) # for 2nd barplot() 
+0

謝謝!順便說一下,我發現了一個新問題。我所有的x軸和y軸實驗室都沒有顯示在劇情中。你知道爲什麼嗎? – Ziv