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

11.3 離散色階

離散顏色和填充出現(xiàn)在許多情況下研侣。一個(gè)典型的例子是一個(gè)條形圖谱邪,它將位置和填充都編碼為相同的變量。

df <- data.frame(x = c("a", "b", "c", "d"), y = c(3, 4, 1, 2))
bars <- ggplot(df, aes(x, y, fill = x)) + 
  geom_bar(stat = "identity") + 
  labs(x = NULL, y = NULL) +
  theme(legend.position = "none")

離散顏色的默認(rèn)方法是scale_fill_discrete()默認(rèn)值庶诡,scale_fill_hue()也能生成相同的圖:

bars
bars + scale_fill_discrete()
bars + scale_fill_hue()
image.png

這個(gè)默認(rèn)比例有一些限制(稍后討論)惦银,將首先討論用于生成更好的離散調(diào)色板的工具。

11.3.1 Brewer scales

scale_colour_brewer()是一個(gè)離散的色階,它和連續(xù)的模擬scale_colour_distiller()和分箱模擬scale_colour_fermenter()一起使用扯俱,從http://colorbrewer2.org/中精心挑選的“ColorBrewer”顏色书蚪。這些顏色在各種情況下都能很好地工作,盡管重點(diǎn)是在地圖上迅栅,所以顏色往往在大區(qū)域顯示時(shí)效果更好殊校。有很多不同的選擇:

RColorBrewer::display.brewer.all()
image.png

第一組調(diào)色板是順序刻度,當(dāng)離散刻度是有序(例如读存,排名數(shù)據(jù))時(shí)非常有用为流,并且可用于使用scale_colour_distiller()用于連續(xù)數(shù)據(jù)。對(duì)于無(wú)序分類數(shù)據(jù)让簿,最感興趣的調(diào)色板是第二組中的調(diào)色板敬察。'Set1' 和 'Dark2' 對(duì)點(diǎn)特別有用,'Set2'尔当、'Pastel1'莲祸、'Pastel2' 和 'Accent' 對(duì)區(qū)域效果很好。

bars + scale_fill_brewer(palette = "Set1")
bars + scale_fill_brewer(palette = "Set2")
bars + scale_fill_brewer(palette = "Accent")
image.png

請(qǐng)注意椭迎,沒有任何調(diào)色板對(duì)所有圖形都適用锐帜。散點(diǎn)圖通常使用小的繪圖標(biāo)記,明亮的顏色往往比微妙的效果更好:

# scatter plot
df <- data.frame(x = 1:3 + runif(30), y = runif(30), z = c("a", "b", "c"))
point <- ggplot(df, aes(x, y)) +
  geom_point(aes(colour = z))  + 
  theme(legend.position = "none") +
  labs(x = NULL, y = NULL)

# three palettes
point + scale_colour_brewer(palette = "Set1")
point + scale_colour_brewer(palette = "Set2")  
point + scale_colour_brewer(palette = "Pastel1")
image.png

條形圖通常包含大塊顏色畜号,明亮的顏色可能會(huì)讓人難以抗拒缴阎。在這種情況下,微妙的顏色往往效果更好:

# bar plot
df <- data.frame(x = 1:3, y = 3:1, z = c("a", "b", "c"))
area <- ggplot(df, aes(x, y)) + 
  geom_bar(aes(fill = z), stat = "identity") + 
  theme(legend.position = "none") +
  labs(x = NULL, y = NULL)

# three palettes
area + scale_fill_brewer(palette = "Set1")
area + scale_fill_brewer(palette = "Set2")
area + scale_fill_brewer(palette = "Pastel1")
image.png

11.3.2 色調(diào)和灰度

默認(rèn)配色方案在 HCL 色輪周圍選擇均勻分布的色調(diào)简软。這適用于多達(dá)大約八種顏色药蜻,但之后就很難區(qū)分不同的顏色。您可以使用h替饿、cl參數(shù)控制默認(rèn)色度和亮度以及色調(diào)范圍:

bars
bars + scale_fill_hue(c = 40)
bars + scale_fill_hue(h = c(180, 300))
image.png

默認(rèn)配色方案的一個(gè)缺點(diǎn)是,因?yàn)樗蓄伾季哂邢嗤牧炼群蜕{(diào)贸典,所以當(dāng)您以黑白方式打印它們時(shí)视卢,它們都顯示為相同的灰色陰影。請(qǐng)注意廊驼,如果您打算以黑白打印離散色階据过,最好使用scale_fill_grey()將離散數(shù)據(jù)映射到灰色,從淺到深:

bars + scale_fill_grey()
bars + scale_fill_grey(start = 0.5, end = 1)
bars + scale_fill_grey(start = 0, end = 0.5)
image.png

11.3.3 手動(dòng)調(diào)色

如果挑選的調(diào)色板都不適合妒挎,或者您有自己喜歡的顏色绳锅,您可以使用scale_fill_manual()手動(dòng)設(shè)置顏色。如果您希望選擇突出二級(jí)分組結(jié)構(gòu)的顏色或引起對(duì)不同比較的注意酝掩,這會(huì)很有用:

bars + scale_fill_manual(values = c("sienna1", "sienna4", "hotpink1", "hotpink4"))
bars + scale_fill_manual(values = c("tomato1", "tomato2", "tomato3", "tomato4"))
bars + scale_fill_manual(values = c("grey", "black", "grey", "grey"))
image.png

您還可以使用命名向量來(lái)指定要分配給每個(gè)級(jí)別的顏色鳞芙,這允許您按您喜歡的任何順序指定級(jí)別:

bars + scale_fill_manual(values = c(
  "d" = "grey",
  "c" = "grey",
  "b" = "black",
  "a" = "grey"
))
image

11.4 分箱顏色標(biāo)度

色階也能進(jìn)行分箱。默認(rèn)標(biāo)度scale_fill_binned(),轉(zhuǎn)換為scale_fill_steps()原朝。這些標(biāo)度有一個(gè)n.breaks參數(shù)來(lái)控制由比例創(chuàng)建的離散顏色類別的數(shù)量驯嘱。與直覺相反,因?yàn)槿祟惖囊曈X系統(tǒng)非常擅長(zhǎng)檢測(cè)邊緣喳坠,這有時(shí)會(huì)使連續(xù)的顏色梯度更容易被感知:

erupt + scale_fill_binned()
image
erupt + scale_fill_steps()
image
erupt + scale_fill_steps(n.breaks = 8)
image

在其他方面scale_fill_steps()類似于scale_fill_gradient()鞠评,并允許您構(gòu)建自己的雙色漸變。還有一種三色變體scale_fill_steps2()和 n 色標(biāo)度變體scale_fill_stepsn()壕鹉,它們的行為與其連續(xù)對(duì)應(yīng)物相似:

erupt + scale_fill_steps(low = "grey", high = "brown")
image
erupt + scale_fill_steps2(low = "grey", mid = "white", high = "brown", midpoint = .02)
image
erupt + scale_fill_stepsn(n.breaks = 12, colours = terrain.colors(12))
image

也存在用于分級(jí)的brewer analog剃幌,稱為scale_fill_fermenter()

erupt + scale_fill_fermenter(n.breaks = 9)
image
erupt + scale_fill_fermenter(n.breaks = 9, palette = "Oranges")
image
erupt + scale_fill_fermenter(n.breaks = 9, palette = "PuOr")
image.png

注意,如離散函數(shù)scale_fill_brewer()、連續(xù)函數(shù)scale_fill_distiller()與分箱函數(shù)scale_fill_fermenter()不會(huì)在brewer顏色之間進(jìn)行插值晾浴,如果您設(shè)置n.breaks的顏色大于調(diào)色板中的顏色數(shù)量负乡,則會(huì)出現(xiàn)警告消息,并且不會(huì)顯示某些顏色怠肋。

11.5 Alpha標(biāo)度

Alpha標(biāo)度將陰影的透明度映射到數(shù)據(jù)中的一個(gè)值敬鬓。它們通常不是很有用,但可以是一種方便的方法笙各,可以直觀地減輕不太重要的觀察钉答。Scale_alpha()scale_alpha_continuous()的別名,因?yàn)檫@是alpha最常用的用法杈抢,它可以節(jié)省一些輸入数尿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市惶楼,隨后出現(xiàn)的幾起案子右蹦,更是在濱河造成了極大的恐慌,老刑警劉巖歼捐,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件何陆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡豹储,警方通過(guò)查閱死者的電腦和手機(jī)贷盲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剥扣,“玉大人巩剖,你說(shuō)我怎么就攤上這事∧魄樱” “怎么了佳魔?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)晦炊。 經(jīng)常有香客問(wèn)我鞠鲜,道長(zhǎng)宁脊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任镊尺,我火速辦了婚禮朦佩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庐氮。我一直安慰自己语稠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布弄砍。 她就那樣靜靜地躺著仙畦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪音婶。 梳的紋絲不亂的頭發(fā)上慨畸,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音衣式,去河邊找鬼寸士。 笑死,一個(gè)胖子當(dāng)著我的面吹牛碴卧,可吹牛的內(nèi)容都是我干的弱卡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼住册,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼婶博!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起荧飞,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凡人,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后叹阔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挠轴,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年耳幢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了忠荞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帅掘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堂油,到底是詐尸還是另有隱情修档,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布府框,位于F島的核電站吱窝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜院峡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一兴使、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧照激,春花似錦发魄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至口柳,卻和暖如春苹粟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背跃闹。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工嵌削, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人望艺。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓苛秕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親荣茫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子想帅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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

  • 11 色階與圖例 除了位置之外,最常用的屬性是基于顏色的圖形屬性啡莉,在ggplot2中有許多方法將值映射到顏色港准。在我...
    denghb001閱讀 3,133評(píng)論 0 1
  • 本筆記內(nèi)容:最近工作中遇到的分析需求:按照要求的分組畫boxplot和PcoA的散點(diǎn)圖。對(duì)畫各種圖的實(shí)現(xiàn)方法咧欣,一些...
    GPZ_Lab閱讀 14,373評(píng)論 0 18
  • ggplot2繪圖理念 圖形系統(tǒng)的核心理念是把繪圖與數(shù)據(jù)分離浅缸,把數(shù)據(jù)相關(guān)的繪圖與數(shù)據(jù)無(wú)關(guān)的繪圖分離,按圖層作圖魄咕。g...
    毛線東東a閱讀 2,074評(píng)論 0 12
  • 4 群組幾何對(duì)象 幾何對(duì)象可以簡(jiǎn)單分為個(gè)體幾何對(duì)象和總體幾何對(duì)象衩椒。個(gè)體幾何對(duì)象對(duì)數(shù)據(jù)框的每一行數(shù)據(jù)繪制一個(gè)可以區(qū)別...
    denghb001閱讀 1,121評(píng)論 0 3
  • 當(dāng)使用ggplot2作圖的時(shí)候如果多個(gè)圖拼接到一起,圖例互相之間有一樣的時(shí)候哮兰,比如如下的情況(我們用R語(yǔ)言內(nèi)置的鳶...
    小明的數(shù)據(jù)分析筆記本閱讀 7,906評(píng)論 0 11