簡體   English   中英

將圖例置於r中兩個圖的下方

[英]Centring legend below two plots in r

我想將一個共同的傳說集中在兩個地塊下面。 我使用xpd=TRUE來允許在繪圖本身外打印,並使用oma為圖例創建空間。 然而,傳說不會在水平方向上移動並且會在“早期”垂直方向上被剪切。 有什么建議?

quartz(title="PCoA",12,6)
par(mfrow=c(1,2),oma=c(5,0,0,0),xpd=TRUE)

plot(1:3,4:6,main="plot 1")

plot(1:3,4:6,main="plot 2")


# Clips the plot    
legend(1,3.5,ncol=3,c("0-1 km","1-5 km","outside barrier"),fill=c("green","orange","red"), title="Fetch")

# Won't let me move the legend sideways 
legend(0,3.5,ncol=3,c("0-1 km","1-5 km","outside barrier"),fill=c("green","orange","red"), title="Fetch")

在此輸入圖像描述

UPDATE

通過下面的解決方案,可以通過拖動邊緣來改變圖形的尺寸,從而切割圖形的邊緣(見下文)。 可能會發生什么想法?

在此輸入圖像描述

在此輸入圖像描述

而不是使用par=mfrow(...)我建議你使用layout()

這允許您指定具有繪圖位置的矩陣:

layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(4, 1))

par(mai=rep(0.5, 4))
plot(1:3,4:6,main="plot 1")
plot(1:3,4:6,main="plot 2")

par(mai=c(0,0,0,0))
plot.new()
legend(x="center", ncol=3,legend=c("0-1 km","1-5 km","outside barrier"),
       fill=c("green","orange","red"), title="Fetch")

在此輸入圖像描述

par(xpd=NA)更符合您的要求。 ?par幫助頁面中提取:

xpd
邏輯值或NA。 如果為FALSE,則所有繪圖都將剪切到繪圖區域,如果為TRUE,則所有繪圖都將剪切到圖形區域,如果為NA,則所有繪圖都將剪切到設備區域。 另見clip

實際上,您希望將其剪切到設備區域而不是圖形區域(例如,請參閱此博客條目,以獲得圖形,圖形和設備區域之間差異的圖形說明)。

quartz(title="PCoA",12,6)
par(mfrow=c(1,2),oma=c(5,0,0,0),xpd=NA)

plot(1:3,4:6,main="plot 1")

plot(1:3,4:6,main="plot 2")
legend(-0.5,3.5,ncol=3,c("0-1 km","1-5 km","outside barrier"), 
    fill=c("green","orange","red"), title="Fetch")

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM