2015-03-31 46 views
1

enter image description hereR中的圖例框的區域控制R

這裏附上一張圖片,其中圖例框位於繪圖區域之外。如何根據x方向控制圖例框?這裏我用下面的代碼來創建傳說:

par(xpd=TRUE) 
legend(x=16.8,y=2600,legend=c("North","East","West","North_East","North_West","East_West"), 
lwd=2,col=c("red", "blue", "green","black","pink","Orange")) 

x=16.8意味着圖例框將從這裏開始。我可以在x方向上設置圖例的結束點嗎?請幫助我在圖中繪製一個圖例框。

+1

回顧'傳說中的'x.intersp'參數()',它會幫助使傳說不一樣寬。至於沿x軸控制圖例,還請查看'inset'參數。 – ccapizzano 2015-03-31 01:45:13

+0

感謝您的評論。使用x.intersp - 我可以控制圖例框中線和文本之間的距離。我也嘗試y.intersp - 我可以控制在Y軸方向的兩個傳說的文本之間的距離。 現在的問題是如何降低一個傳奇禁區線長度,使整體框將在地塊。我期待更多關於插圖的幫助。 – 2015-03-31 11:30:07

+0

如果我想在分裂我的文字兩行,那麼我應該有什麼關係? – 2015-03-31 12:04:11

回答

0

要解決你的問題,你必須知道你的legend有多大和修復X軸範圍相應。要做到這一點,你需要繪製一個空的圖和空的圖例,並將圖例分配給一個對象。這樣,您就可以訪問圖例的尺寸。然後,您重繪自定義的X軸範圍與xlim情節。

#Generate data 
x <- seq(0,22,length=1000) 
y <- dnorm(x,mean=10, sd=0.5)*4000 

#Plot empty plot, get legend size 
par(xpd=TRUE) 
plot(x,y, type="n", axes=F, xlab="", ylab="") 
my.legend.data <-legend(x=16.8,y=2600,legend=c("North","East","West","North_East","North_West","East_West"), 
lwd=2,col=c("red", "blue", "green","black","pink","Orange"), plot=FALSE) 

#plot chart with custom xlim that will fit legend 
my.x.range <-c(min(x),my.legend.data$rect$left+my.legend.data$rect$w) 
plot(x,y, type="l", lwd=1, xlim=my.x.range) 
legend(x=16.8,y=2600,legend=c("North","East","West","North_East","North_West","East_West"), 
lwd=2,col=c("red", "blue", "green","black","pink","Orange")) 

enter image description here