2014-01-29 157 views
0

我正在使用plot()來創建帶有圖例的地圖,並且由於地圖的形狀,它與圖例重疊。我仍然在學習R,但是如何將地圖稍微向左移動以減少重疊?我確信有一個簡單的解決方法,但我無法找到正確的參數。將右側的R圖移動到側

感謝您的幫助!我是R(和stackoverflow)的新手,所以我不能很遺憾地發佈圖片。

編輯:下面是我運行代碼:

plot(spdfCounties, bg="gray90", col=findColours(ciFisher, colRamp)) 
title("Fisher-Jenks") 
strLegend = paste(
    "$", format(round(ciFisher$brks[-(intClasses + 1)]), big.mark=","), " - ", 
    "$", format(round(ciFisher$brks[-1]), big.mark=","), sep="" 
) 
legMain = legend(
    "topright", legend=strLegend, 
    title="Median Income, 2010", bg="gray", inset=0.02, cex=0.6, 
    fill=colRamp 
) 
+3

你可以發佈你用來生成圖像的代碼嗎? –

回答

1

使用mar(保證金)選項par。從?par

mar在所述四個邊的情節 要指定的形式c(bottom, left, top, right)的數值載體,其 給出餘量的行數。默認值是c(5, 4, 4, 2) + 0.1

所以,如果你的傳奇是在右邊,讓你的右邊距較大輸入

par(mar = c(5, 4, 4, 8) + 0.1)

一些試驗和錯誤應該能夠得到它的權利。


This question有關重置參數值也可能有所幫助。通常,您總是可以使用dev.off()關閉設備,並且新設備將以默認的par設置啓動。


編輯:適應@休的例子

x <- runif(1000) 
y <- runif(1000) 
plot(x, y) 
legend('topright', legend = "points") # overlaps points 

par(mar = c(5, 4, 4, 8) + 0.2) 
plot(x, y) 
legend('right', legend = "points", inset = -.3, xpd = T) 
# The correct right margin and inset value will depend 
# on the size of your graphic device. 

調整頁邊距結果

Extra margin area

添加空白的圖形,如@休的答案,長相像這樣:

White space inside plot


編輯2

試圖從問題適應新的代碼。你仍然在使用基本圖形'plot函數,所以沒有什麼特別的地圖。但是,我們沒有您的數據,所以我們無法真正測試任何內容。 (如果這不起作用---且不論張貼另一個問題之前---你應該看看建議,讓reproducible examples。)

dev.off() # to reset par 
par(mar = c(5, 4, 4, 8)) 
plot(spdfCounties, bg="gray90", col=findColours(ciFisher, colRamp)) 
# the margins are set as soon as you call plot() 
title("Fisher-Jenks") 
strLegend = paste(
    "$", format(round(ciFisher$brks[-(intClasses + 1)]), big.mark=","), " - ", 
    "$", format(round(ciFisher$brks[-1]), big.mark=","), sep="" 
) 
legMain = legend(
    "right", # changed the legend to right 
    legend=strLegend, 
    title="Median Income, 2010", 
    bg="gray", 
    inset= -0.3, # negative inset to put it outside of the plotting region 
    xpd = T,  # xpd set to allow plotting outside of the plot region 
    cex=0.6, 
    fill=colRamp 
) 
+0

這是正確的嗎?該圖例包含在繪圖區域內,不會受mar的變化(超出繪圖區域)的影響。 – Hugh

+0

@Hugh我們沒有任何代碼,所以沒有理由相信這個傳說是在劇情區域內。問題是「如何左右移動情節」,並調整邊距。我經常喜歡把這個傳說放在繪圖區域之外(如果需要,負插入和設置「xpd」的效果很好)。 – Gregor

+0

@Hugh和@shujaa感謝您的回覆!你的想法看起來不錯,但地圖和傳說似乎是前後移動/不創造保證金。我已經嘗試在'plot()'和'legend()'之前放置'par()',但兩者似乎都縮小了圖例的範圍。有沒有不同的問題,因爲我的情節是一張地圖? –

0

作爲一次性的,你可以改變的plotlim參數創造更多空間。

x <- runif(1000) 
y <- runif(1000) 
plot(x,y) 
legend('topright', legend = "points") # overlaps points 

plot(x,y, xlim = c(0, 1.5), ylim = c(0, 1.5) # adds white space 
legend('topright', legend = "points")