legend
位於 graphics
包(package)。 說明
此函數可用於向繪圖添加圖例。請注意,可以使用對函數locator(1)
的調用來代替x
和y
參數。
用法
legend(x, y = NULL, legend, fill = NULL, col = par("col"),
border = "black", lty, lwd, pch,
angle = 45, density = NULL, bty = "o", bg = par("bg"),
box.lwd = par("lwd"), box.lty = par("lty"), box.col = par("fg"),
pt.bg = NA, cex = 1, pt.cex = cex, pt.lwd = lwd,
xjust = 0, yjust = 1, x.intersp = 1, y.intersp = 1,
adj = c(0, 0.5), text.width = NULL, text.col = par("col"),
text.font = NULL, merge = do.lines && has.pch, trace = FALSE,
plot = TRUE, ncol = 1, horiz = FALSE, title = NULL,
inset = 0, xpd, title.col = text.col[1], title.adj = 0.5,
title.cex = cex[1], title.font = text.font[1],
seg.len = 2)
參數
x, y |
用於定位圖例的 x 和 y 坐標。它們可以通過關鍵字或 |
legend |
圖例中出現的字符或長度為 expression 向量。其他對象將被 |
fill |
如果指定,此參數將導致填充指定顏色(或以指定顏色著色)的框出現在圖例文本旁邊。 |
col |
圖例中出現的點或線的顏色。 |
border |
框的邊框顏色(僅在指定 |
lty, lwd |
圖例中出現的線條類型和寬度。必須指定這兩者之一來繪製線條。 |
pch |
圖例中出現的繪圖符號,作為數值向量或 1 字符字符串向量(請參閱 |
angle |
陰影線的角度。 |
density |
陰影線的密度(如果為數字且為正值)。如果 |
bty |
要在圖例周圍繪製的框的類型。允許的值為 |
bg |
圖例框的背景顏色。 (請注意,這僅在 |
box.lty, box.lwd, box.col |
圖例框的線條類型、寬度和顏色(如果 |
pt.bg |
|
cex |
相對於當前 |
pt.cex |
點的擴展因子。 |
pt.lwd |
點的線寬,默認為線的線寬,或者如果未設置,則為 |
xjust |
如何相對於圖例 x 位置調整圖例。值 0 表示左對齊,0.5 表示居中,1 表示右對齊。 |
yjust |
與圖例 y 位置的 |
x.intersp |
符號和圖例文本之間的水平 (x) 間距的字符間距因子。 |
y.intersp |
垂直 (y) 距離(以每個圖例條目上方/下方共享的文本行為單位)。可以使用圖例的每一行具有一個元素的向量。 |
adj |
長度為 1 或 2 的數字;圖例文本的字符串調整。當 |
text.width |
x ( |
text.col |
用於圖例文本的顏色。 |
text.font |
用於圖例文本的字體,請參閱 |
merge |
邏輯性;如果 |
trace |
邏輯性; if |
plot |
合乎邏輯的。如果 |
ncol |
設置圖例項的列數(默認為 1,垂直圖例)。 |
horiz |
邏輯性;如果 |
title |
字符串或長度為 1 的表達式,給出要放置在圖例頂部的標題。其他對象將被 |
inset |
當通過關鍵字放置圖例時,距邊距的插入距離作為繪圖區域的一部分。 |
xpd |
如果提供,則繪製圖例時要使用的 graphical parameter |
title.col |
|
title.adj |
|
title.cex |
標題的擴展因子,默認為 |
title.font |
用於圖例標題的字體,默認為 |
seg.len |
用於說明 |
細節
參數 x
、 y
、 legend
以非標準方式解釋,以允許通過一個或兩個參數指定坐標。如果 legend
缺失且 y
不是數字,則假定第二個參數為 legend
,並且第一個參數指定坐標。
坐標可以以 xy.coords
接受的任何方式指定。如果給出一個點的坐標,則將其用作包含圖例的矩形的左上角坐標。如果它給出兩個點的坐標,則這些點指定矩形的對角(任意一對角,順序任意)。
還可以通過將x
設置為列表"bottomright"
, "bottom"
, "bottomleft"
, "left"
, "topleft"
, "top"
, "topright"
, "right"
和"center"
中的單個關鍵字來指定該位置。這會將圖例放置在圖框內部的給定位置。使用部分參數匹配。可選的 inset
參數指定圖例距繪圖邊距的插入距離。如果給出單個值,則該值將用於兩個邊距;如果給出兩個值,第一個值用於 x
- 距離,第二個值用於 y
- 距離。
如有必要,屬性參數(例如 col
、 pch
、 lty
等)將被回收:merge
則不會。將lty
條目設置為0
或將lwd
條目設置為NA
以抑製相應圖例條目中的行;將 pch
值設置為 NA
以抑製點。
點在線條之後繪製,以便它們可以用背景顏色 pt.bg
覆蓋線條(如果適用)。
請參閱示例以了解如何右對齊標簽。
由於它們不用於 Unicode 代碼點,因此 -31:-1
值將被默默省略,NA
和 ""
值也是如此。
值
包含列表組件的列表
rect |
包含組件的列表
|
text |
包含組件的列表
|
無形中返回了。
例子
## Run the example in '?matplot' or the following:
leg.txt <- c("Setosa Petals", "Setosa Sepals",
"Versicolor Petals", "Versicolor Sepals")
y.leg <- c(4.5, 3, 2.1, 1.4, .7)
cexv <- c(1.2, 1, 4/5, 2/3, 1/2)
matplot(c(1, 8), c(0, 4.5), type = "n", xlab = "Length", ylab = "Width",
main = "Petal and Sepal Dimensions in Iris Blossoms")
for (i in seq(cexv)) {
text (1, y.leg[i] - 0.1, paste("cex=", formatC(cexv[i])), cex = 0.8, adj = 0)
legend(3, y.leg[i], leg.txt, pch = "sSvV", col = c(1, 3), cex = cexv[i])
}
## cex *vector* [in R <= 3.5.1 has 'if(xc < 0)' w/ length(xc) == 2]
legend("right", leg.txt, pch = "sSvV", col = c(1, 3),
cex = 1+(-1:2)/8, trace = TRUE)# trace: show computed lengths & coords
## 'merge = TRUE' for merging lines & points:
x <- seq(-pi, pi, length.out = 65)
for(reverse in c(FALSE, TRUE)) { ## normal *and* reverse axes:
F <- if(reverse) rev else identity
plot(x, sin(x), type = "l", col = 3, lty = 2,
xlim = F(range(x)), ylim = F(c(-1.2, 1.8)))
points(x, cos(x), pch = 3, col = 4)
lines(x, tan(x), type = "b", lty = 1, pch = 4, col = 6)
title("legend('top', lty = c(2, -1, 1), pch = c(NA, 3, 4), merge = TRUE)",
cex.main = 1.1)
legend("top", c("sin", "cos", "tan"), col = c(3, 4, 6),
text.col = "green4", lty = c(2, -1, 1), pch = c(NA, 3, 4),
merge = TRUE, bg = "gray90", trace=TRUE)
} # for(..)
## right-justifying a set of labels: thanks to Uwe Ligges
x <- 1:5; y1 <- 1/x; y2 <- 2/x
plot(rep(x, 2), c(y1, y2), type = "n", xlab = "x", ylab = "y")
lines(x, y1); lines(x, y2, lty = 2)
temp <- legend("topright", legend = c(" ", " "),
text.width = strwidth("1,000,000"),
lty = 1:2, xjust = 1, yjust = 1, inset = 1/10,
title = "Line Types", title.cex = 0.5, trace=TRUE)
text(temp$rect$left + temp$rect$w, temp$text$y,
c("1,000", "1,000,000"), pos = 2)
##--- log scaled Examples ------------------------------
leg.txt <- c("a one", "a two")
par(mfrow = c(2, 2))
for(ll in c("","x","y","xy")) {
plot(2:10, log = ll, main = paste0("log = '", ll, "'"))
abline(1, 1)
lines(2:3, 3:4, col = 2)
points(2, 2, col = 3)
rect(2, 3, 3, 2, col = 4)
text(c(3,3), 2:3, c("rect(2,3,3,2, col=4)",
"text(c(3,3),2:3,\"c(rect(...)\")"), adj = c(0, 0.3))
legend(list(x = 2,y = 8), legend = leg.txt, col = 2:3, pch = 1:2,
lty = 1) #, trace = TRUE)
} # ^^^^^^^ to force lines -> automatic merge=TRUE
par(mfrow = c(1,1))
##-- Math expressions: ------------------------------
x <- seq(-pi, pi, length.out = 65)
plot(x, sin(x), type = "l", col = 2, xlab = expression(phi),
ylab = expression(f(phi)))
abline(h = -1:1, v = pi/2*(-6:6), col = "gray90")
lines(x, cos(x), col = 3, lty = 2)
ex.cs1 <- expression(plain(sin) * phi, paste("cos", phi)) # 2 ways
utils::str(legend(-3, .9, ex.cs1, lty = 1:2, plot = FALSE,
adj = c(0, 0.6))) # adj y !
legend(-3, 0.9, ex.cs1, lty = 1:2, col = 2:3, adj = c(0, 0.6))
require(stats)
x <- rexp(100, rate = .5)
hist(x, main = "Mean and Median of a Skewed Distribution")
abline(v = mean(x), col = 2, lty = 2, lwd = 2)
abline(v = median(x), col = 3, lty = 3, lwd = 2)
ex12 <- expression(bar(x) == sum(over(x[i], n), i == 1, n),
hat(x) == median(x[i], i == 1, n))
utils::str(legend(4.1, 30, ex12, col = 2:3, lty = 2:3, lwd = 2))
## 'Filled' boxes -- see also example(barplot) which may call legend(*, fill=)
barplot(VADeaths)
legend("topright", rownames(VADeaths), fill = gray.colors(nrow(VADeaths)))
## Using 'ncol'
x <- 0:64/64
for(R in c(identity, rev)) { # normal *and* reverse x-axis works fine:
xl <- R(range(x)); x1 <- xl[1]
matplot(x, outer(x, 1:7, function(x, k) sin(k * pi * x)), xlim=xl,
type = "o", col = 1:7, ylim = c(-1, 1.5), pch = "*")
op <- par(bg = "antiquewhite1")
legend(x1, 1.5, paste("sin(", 1:7, "pi * x)"), col = 1:7, lty = 1:7,
pch = "*", ncol = 4, cex = 0.8)
legend("bottomright", paste("sin(", 1:7, "pi * x)"), col = 1:7, lty = 1:7,
pch = "*", cex = 0.8)
legend(x1, -.1, paste("sin(", 1:4, "pi * x)"), col = 1:4, lty = 1:4,
ncol = 2, cex = 0.8)
legend(x1, -.4, paste("sin(", 5:7, "pi * x)"), col = 4:6, pch = 24,
ncol = 2, cex = 1.5, lwd = 2, pt.bg = "pink", pt.cex = 1:3)
par(op)
} # for(..)
## point covering line :
y <- sin(3*pi*x)
plot(x, y, type = "l", col = "blue",
main = "points with bg & legend(*, pt.bg)")
points(x, y, pch = 21, bg = "white")
legend(.4,1, "sin(c x)", pch = 21, pt.bg = "white", lty = 1, col = "blue")
## legends with titles at different locations
plot(x, y, type = "n")
legend("bottomright", "(x,y)", pch=1, title= "bottomright")
legend("bottom", "(x,y)", pch=1, title= "bottom")
legend("bottomleft", "(x,y)", pch=1, title= "bottomleft")
legend("left", "(x,y)", pch=1, title= "left")
legend("topleft", "(x,y)", pch=1, title= "topleft, inset = .05", inset = .05)
legend("top", "(x,y)", pch=1, title= "top")
legend("topright", "(x,y)", pch=1, title= "topright, inset = .02",inset = .02)
legend("right", "(x,y)", pch=1, title= "right")
legend("center", "(x,y)", pch=1, title= "center")
# using text.font (and text.col):
op <- par(mfrow = c(2, 2), mar = rep(2.1, 4))
c6 <- terrain.colors(10)[1:6]
for(i in 1:4) {
plot(1, type = "n", axes = FALSE, ann = FALSE); title(paste("text.font =",i))
legend("top", legend = LETTERS[1:6], col = c6,
ncol = 2, cex = 2, lwd = 3, text.font = i, text.col = c6)
}
par(op)
# using text.width for several columns
plot(1, type="n")
legend("topleft", c("This legend", "has", "equally sized", "columns."),
pch = 1:4, ncol = 4)
legend("bottomleft", c("This legend", "has", "optimally sized", "columns."),
pch = 1:4, ncol = 4, text.width = NA)
legend("right", letters[1:4], pch = 1:4, ncol = 4,
text.width = 1:4 / 50)
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Murrell, P. (2005) R Graphics. Chapman & Hall/CRC Press.
也可以看看
相關用法
- R layout 指定複雜的繪圖安排
- R locator 圖形輸入
- R lines 將連接的線段添加到繪圖中
- R barplot 條形圖
- R plot.histogram 繪製直方圖
- R points 向繪圖添加點
- R stem 莖葉圖
- R mtext 將文本寫入繪圖的邊距
- R arrows 將箭頭添加到繪圖中
- R contour 顯示輪廓
- R pairs 散點圖矩陣
- R stars 星圖(蜘蛛圖/雷達圖)和線段圖
- R box 在地塊周圍畫一個方框
- R coplot 調節圖
- R smoothScatter 具有平滑密度顏色表示的散點圖
- R mosaicplot 馬賽克圖
- R bxp 從摘要中繪製箱線圖
- R plot.raster 繪製光柵圖像
- R axTicks 計算軸刻度線位置
- R curve 繪製函數圖
- R plot.factor 繪製因子變量
- R sunflowerplot 製作向日葵散點圖
- R plot.table 表對象的繪圖方法
- R units 圖形單位
- R identify 識別散點圖中的點
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Add Legends to Plots。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。