11.ggplot2——色階與圖例(三)

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")
image.png

在左/右和上/下之間切換會(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))
image.png

圖例周圍還有一個(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")
image.png

更準(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)是:

  • nrowncol指定表格的尺寸荡短。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))
    
image.png
  • reverse 顛倒鍵的順序:

    base
    base + guides(fill = guide_legend(reverse = TRUE))
    
image.png
  • 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)))
    
image.png
  • keywidthkeyheight(連同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))
    
image.png
  • direction 是指定引導(dǎo)方向的字符串:

    base + guides(size = guide_bins(direction = "vertical"))
    base + guides(size = guide_bins(direction = "horizontal"))
    
image.png
  • show.limits 指定是否在引導(dǎo)軸的末端顯示刻度線

  • axis.colour孕荠,axis.linewidthaxis.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"
        )
      )
    )
    
image.png
  • keywidth, keyheight,reverseoverride.aes均具有相同guide_legend()行為娩鹉。

11.7.3 guide_colourbar() / guide_colorbar()

圖例的顏色條是為連續(xù)范圍的顏色設(shè)計(jì)的攻谁,它輸出一個(gè)顏色逐漸變化的矩形。最重要的論據(jù)是:

  • barwidthbarheight允許您指定條的大小弯予。這些是網(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")))
image.png

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))
    
    image.png
  • ticks是一個(gè)邏輯變量甚牲,指示是否應(yīng)在圖例標(biāo)簽旁邊顯示刻度線(默認(rèn)為NULL,在這種情況下從標(biāo)度繼承值)

  • even.steps是一個(gè)邏輯變量蝶柿,指示 bin 是否應(yīng)均勻間隔(默認(rèn)為TRUE)還是大小與它們?cè)跀?shù)據(jù)中的頻率成比例

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末丈钙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子交汤,更是在濱河造成了極大的恐慌雏赦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芙扎,死亡現(xiàn)場(chǎng)離奇詭異星岗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)戒洼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門俏橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人圈浇,你說我怎么就攤上這事寥掐。” “怎么了磷蜀?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵召耘,是天一觀的道長。 經(jīng)常有香客問我褐隆,道長污它,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮轨蛤,結(jié)果婚禮上蜜宪,老公的妹妹穿的比我還像新娘。我一直安慰自己祥山,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布掉伏。 她就那樣靜靜地躺著缝呕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斧散。 梳的紋絲不亂的頭發(fā)上供常,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音鸡捐,去河邊找鬼栈暇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛箍镜,可吹牛的內(nèi)容都是我干的源祈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼色迂,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼香缺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歇僧,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤图张,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后诈悍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祸轮,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年侥钳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了适袜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慕趴,死狀恐怖痪蝇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冕房,我是刑警寧澤躏啰,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站耙册,受9級(jí)特大地震影響给僵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一帝际、第九天 我趴在偏房一處隱蔽的房頂上張望蔓同。 院中可真熱鬧,春花似錦蹲诀、人聲如沸斑粱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽则北。三九已至,卻和暖如春痕慢,著一層夾襖步出監(jiān)牢的瞬間尚揣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工掖举, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留快骗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓塔次,卻偏偏與公主長得像方篮,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俺叭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容