11.6 圖例
11.6.1 圖例位置
許多影響圖例整體顯示的設(shè)置是通過主題系統(tǒng)控制的。目前需要知道的是使用theme()函數(shù)修改主題帽蝶。
圖例的位置和對(duì)齊方式由主題元素控制,主題位置legend.position
可以取值“right”, “l(fā)eft”, “top”, “bottom”, or “none”(無圖例)第队。
base <- ggplot(toy, aes(up, up)) +
geom_point(aes(colour = txt), size = 3) +
xlab(NULL) +
ylab(NULL)
base + theme(legend.position = "left")
base + theme(legend.position = "right") # the default
base + theme(legend.position = "bottom")
base + theme(legend.position = "none")
在左/右和上/下之間切換會(huì)修改每個(gè)圖例中鍵的布局方式(水平或垂直),以及多個(gè)圖例的堆疊方式(水平或垂直)刨秆。如果需要凳谦,您可以單獨(dú)調(diào)整以下選項(xiàng):
legend.direction
:圖例的布局(“水平”或“垂直”)。legend.box
:多個(gè)圖例的排列(“水平”或“垂直”)衡未。legend.box.just
:當(dāng)有多個(gè)圖例時(shí)尸执,整個(gè)邊界框中每個(gè)圖例的對(duì)齊方式(“top”, “bottom”, “l(fā)eft”, or “right”)。
或者缓醋,如果您的圖中有很多空白區(qū)域剔交,您可能希望將圖例放在圖中。您可以通過設(shè)置legend.position
為數(shù)字向量來完成此操作改衩。數(shù)字代表面板區(qū)域中的相對(duì)位置:c(0, 1)
是左上角,c(1, 0)
是右下角驯镊。用legend.justification
可以控制其圖例的角落legend.position
葫督,這是類似的方式指定竭鞍。不幸的是,將圖例準(zhǔn)確定位在您想要的位置需要大量的反復(fù)試驗(yàn)橄镜。
base <- ggplot(toy, aes(up, up)) +
geom_point(aes(colour = txt), size = 3)
base + theme(legend.position = c(0, 1), legend.justification = c(0, 1))
base + theme(legend.position = c(0.5, 0.5), legend.justification = c(0.5, 0.5))
base + theme(legend.position = c(1, 0), legend.justification = c(1, 0))
圖例周圍還有一個(gè)邊距偎快,您可以使用legend.margin = unit(0, "mm")
.
11.7 圖例鍵符號(hào)
在大多數(shù)情況下,圖例鍵中顯示的默認(rèn)字形將適合圖層和圖形屬性洽胶。不同顏色的線圖將在圖例中顯示為不同顏色的線晒夹,箱線圖將在圖例中顯示為小箱線圖,依此類推姊氓。如果您需要覆蓋此行為丐怯,該key_glyph
參數(shù)可用于將特定層與不同類型的字形相關(guān)聯(lián)。例如:
base <- ggplot(economics, aes(date, psavert, color = "savings"))
base + geom_line()
base + geom_line(key_glyph = "timeseries")
更準(zhǔn)確地說翔横,每個(gè)幾何對(duì)象都有一個(gè)函數(shù)相關(guān)聯(lián)读跷,例如draw_key_path(),draw_key_boxplot()或者draw_key_path()在創(chuàng)建圖例時(shí)負(fù)責(zé)繪制鍵。您可以直接傳遞所需的關(guān)鍵繪圖函數(shù):例如禾唁,base + geom_line(key_glyph = draw_key_timeseries)
還會(huì)生成右圖所示的結(jié)果效览。
11.7.1 guide_legend()
圖例指南在表格中顯示各個(gè)鍵。最有用的選項(xiàng)是:
-
nrow
或ncol
指定表格的尺寸荡短。byrow
控制表格的填充方式:FALSE
按列填充(默認(rèn))丐枉,TRUE
按行填充。base <- ggplot(mpg, aes(drv, fill = factor(cyl))) + geom_bar() base base + guides(fill = guide_legend(ncol = 2)) base + guides(fill = guide_legend(ncol = 2, byrow = TRUE))
-
reverse
顛倒鍵的順序:base base + guides(fill = guide_legend(reverse = TRUE))
-
override.aes
當(dāng)您希望圖例中的元素與圖中的幾何圖形顯示不同時(shí)掘托,這很有用瘦锹。當(dāng)您使用透明度或大小來處理適度的過度繪圖并在繪圖中使用顏色時(shí),這通常是必需的烫映。base <- ggplot(mpg, aes(displ, hwy, colour = drv)) + geom_point(size = 4, alpha = .2, stroke = 0) base + guides(colour = guide_legend()) base + guides(colour = guide_legend(override.aes = list(alpha = 1)))
-
keywidth
和keyheight
(連同default.unit
)允許您指定鍵的大小沼本。這些是網(wǎng)格單位,例如unit(1, "cm")
锭沟。
11.7.2 guide_bins()
guide_bins()適用于連續(xù)變量被分箱然后映射到產(chǎn)生圖例的圖形屬性的情況(如大小抽兆、顏色和填充)。例如族淮,在mpg
數(shù)據(jù)中辫红,我們可以scale_size_binned()用來創(chuàng)建連續(xù)變量hwy
的分箱版本。
base <- ggplot(mpg, aes(displ, manufacturer, size = hwy)) +
geom_point(alpha = .2) +
scale_size_binned()
與guide_bins()不同guide_legend()是為分箱標(biāo)度創(chuàng)建的圖例不會(huì)將各個(gè)鍵組織到表中祝辣。相反贴妻,它們沿單個(gè)垂直(或水平)軸排列在列(或行)中,默認(rèn)情況下蝙斜,垂直(或水平)軸顯示有自己的軸名惩。guide_bins()下面列出了的重要參數(shù):
-
axis
指示是否應(yīng)繪制軸(默認(rèn)為TRUE
)。base base + guides(size = guide_bins(axis = FALSE))
-
direction
是指定引導(dǎo)方向的字符串:base + guides(size = guide_bins(direction = "vertical")) base + guides(size = guide_bins(direction = "horizontal"))
show.limits
指定是否在引導(dǎo)軸的末端顯示刻度線-
axis.colour
孕荠,axis.linewidth
和axis.arrow
用于控制所顯示旁邊的圖例鍵導(dǎo)向軸base + guides(size = guide_bins(show.limits = TRUE)) base + guides( size = guide_bins( axis.colour = "red", axis.arrow = arrow( length = unit(.1, "inches"), ends = "first", type = "closed" ) ) )
-
keywidth
,keyheight
,reverse
和override.aes
均具有相同guide_legend()行為娩鹉。
11.7.3 guide_colourbar()
/ guide_colorbar()
圖例的顏色條是為連續(xù)范圍的顏色設(shè)計(jì)的攻谁,它輸出一個(gè)顏色逐漸變化的矩形。最重要的論據(jù)是:
barwidth
和barheight
允許您指定條的大小弯予。這些是網(wǎng)格單位戚宦,例如unit(1, "cm")
。nbin
控制切片的數(shù)量锈嫩。如果您繪制一個(gè)很長的條受楼,您可能希望將其從默認(rèn)值 20 增加。reverse
翻轉(zhuǎn)顏色條以將最小值放在頂部呼寸。
這些選項(xiàng)如下圖所示:
base <- ggplot(mpg, aes(cyl, displ, colour = hwy)) +
geom_point(size = 2)
base
base + guides(colour = guide_colourbar(reverse = TRUE))
base + guides(colour = guide_colourbar(barheight = unit(2, "cm")))
11.7.4 guide_coloursteps()
/ guide_colorsteps()
這個(gè)“顏色步驟”圖例是一個(gè)guide_colourbar()的一個(gè)版本艳汽,適用于裝箱的顏色和填充比例。它顯示區(qū)域之間的中斷作為一個(gè)單一的常量顏色等舔,而不是顯示一個(gè)顏色梯度骚灸,沿條平穩(wěn)變化。參數(shù)大多與guide_colourbar()的參數(shù)相同慌植。附加參數(shù)如下:
-
show.limits
指示值是否應(yīng)顯示在階梯顏色條的末端(類似于guide_bins()中的相應(yīng)參數(shù))base <- ggplot(mpg, aes(displ, hwy, colour = cyl)) + geom_point() + scale_color_binned() base + guides(colour = guide_coloursteps(show.limits = TRUE)) base + guides(colour = guide_coloursteps(show.limits = FALSE))
ticks
是一個(gè)邏輯變量甚牲,指示是否應(yīng)在圖例標(biāo)簽旁邊顯示刻度線(默認(rèn)為NULL
,在這種情況下從標(biāo)度繼承值)even.steps
是一個(gè)邏輯變量蝶柿,指示 bin 是否應(yīng)均勻間隔(默認(rèn)為TRUE
)還是大小與它們?cè)跀?shù)據(jù)中的頻率成比例