104. Graphics for communication(1)

Label

??為圖片添加:
??標(biāo)題紫皇,Title:標(biāo)題的目的是總結(jié)主要的發(fā)現(xiàn)草丧;
??副標(biāo)題,subtitle:在標(biāo)題下面以較小的字體添加額外的細節(jié)轰绵。
??圖片的說明文字粉寞,caption:在圖的右下角添加文本,通常用來描述數(shù)據(jù)的來源左腔。
??x唧垦,y,color:重新設(shè)置坐標(biāo)軸和圖例的標(biāo)題液样;橫縱坐標(biāo)的標(biāo)題中最好帶有單位振亮。

ggplot(mpg, aes(displ, hwy)) +
  geom_point(aes(color = class)) +
  geom_smooth(se = FALSE) +
  labs(
    title = "Fuel efficiency generally decreases with engine size",
    subtitle = "Two seaters (sports cars) are an exception because of their light weight",
    caption = "Data from fueleconomy.gov",
    x = "Engine displacement (L)",
    y = "Highway fuel economy (mpg)",
    colour = "Car type"
  )

注釋

不那么智能的工具geom_text()和geom_label()

??除了標(biāo)注圖片的主要部分,標(biāo)注單個或一組觀測值有時會很有用鞭莽。
??文本標(biāo)記對于標(biāo)記圖形很有用坊秸,它們本身可以用作散點圖(geom_text()和散點圖很相似,但有一個額外的美學(xué)屬性:label)撮抓,也可以與其他幾何對象結(jié)合使用妇斤,例如,給points打標(biāo)簽或標(biāo)注bars的高度。geom_text()只向圖形添加文本站超,geom_label()在文本后面繪制一個矩形荸恕,使其更易于閱讀。

函數(shù)1 函數(shù)2
僅向圖形中添加文本死相,check_overlap=TRUE可以不在同一位置繪制多個文本 在文本后繪制一個矩形融求,可以設(shè)置矩形的屬性。沒有check_overlap功能算撮,也就是會繪制所有標(biāo)簽生宛。沒有angle美學(xué)屬性,且比geom_text()慢肮柜。fill美學(xué)屬性可以填充label的背景顏色陷舅。

??1)parse:如果為TRUE,labels將被解析成表達式审洞,并如?plotmath所描述的那樣展示莱睁。
??2)nudge_x,nudge_y:“nudge”芒澜,輕推仰剿。在水平和垂直方向上輕推標(biāo)簽的位置,位移text遠離point時很有用痴晦,特別在離散尺度上南吮,不能和position一起指定。
??3)label.padding:labels周圍的填充量誊酌,默認0.25 lines部凑。
??4)label.r:圓角半徑,默認0.15 lines术辐。
??5)label.size:label邊框大小砚尽,默認0.25,單位為mm辉词。
??6)show.legend:圖例中是否應(yīng)該包含本layer的信息必孤?NA表示有美學(xué)映射時展示,沒有就不展示瑞躺;FALSE表示總是不展示敷搪;TRUE表示總是展示;也可以是一個named logical vector用來選擇性展示美學(xué)屬性幢哨。
??7)check_overlap:如果為TRUE赡勘,與同一個layer中之前的文本有重疊的text將不在圖片上畫了。check_overlap發(fā)生在繪制時間且按data中出現(xiàn)的順序捞镰,所以在調(diào)用geom_text()之前應(yīng)該將data按照標(biāo)簽列進行排序闸与。
??圖中毙替,a text element的 height 和 width 是0,你看到的是 physical unites 而不是 data units践樱。所以即使圖片的大小更改厂画,text labels 仍然是相同的大小,也因此你可能會看到一些圖中text labels跑到了整個繪圖區(qū)域之外拷邢,因為 axis limits 不會自動延伸以包含所有的 text label袱院。
??以上兩個函數(shù)為data中的每一行添加標(biāo)簽,如果需要給特定的點添加label瞭稼,可以用annotate()忽洛。
??所以到現(xiàn)在你應(yīng)該明白肚邢,在給圖添加標(biāo)簽之前你需要準備label data凿将,這個label data可以是你繪圖數(shù)據(jù)中的一個子集。

# 準備label data:每種車型中最高效的車魄衅。
# row_number()等于rank(,ties.method="first")
best_in_class <- mpg %>%
  group_by(class) %>%
  filter(row_number(desc(hwy)) == 1)
# 用geom_text()為對應(yīng)的點添加labels廷臼,但labels之間苍在、labels和points之間互相重疊導(dǎo)致圖片可讀性差
ggplot(mpg, aes(displ, hwy)) +
  geom_point(aes(colour = class)) +
  geom_text(aes(label = model), data = best_in_class)
# 可用geom_label()將label用方框標(biāo)出來绝页,再用nudge將label拉離point一點點
ggplot(mpg, aes(displ, hwy)) +
  geom_point(aes(colour = class)) +
  geom_label(aes(label = model), data = best_in_class, nudge_y = 2, alpha = 0.5)

??美學(xué)屬性hjustvjust用來控制label的對齊方式荠商,即point相對于label的位置,所有組合如下:

來自R data for science

??hjustvjust的值可以是 ("left", "middle", "right", "bottom", "center", "top")续誉,也可以用0表示right/bottom莱没,1表示top/left。"inward" 總是將文本向中心對齊酷鸦, "outward"總是將文本向遠離中心的方向?qū)R(這里的中心可以理解為圖片的中心):

df <- data.frame(
  x = c(1, 1, 2, 2, 1.5),
  y = c(1, 2, 1, 2, 1.5),
  text = c("bottom-left", "bottom-right", "top-left", "top-right", "center")
)
ggplot(df, aes(x, y)) +
  geom_text(aes(label = text))
ggplot(df, aes(x, y)) +
  geom_text(aes(label = text), vjust = "inward", hjust = "inward")
“inward”和“outward”饰躲,左圖的正確標(biāo)題應(yīng)該是“set hjust and vjust without inward”,右圖的正確標(biāo)題應(yīng)該是“set hjust and vjust with inward”。

自動定位不重疊的text labels的工具ggrepel包

??以上兩個工具不能解決labels互相重疊的問題臼隔,ggrepel包可以解決嘹裂,這個包里包括兩個函數(shù):geom_text_repel()geom_label_repel()摔握,可以使labels互相遠離寄狼、labels遠離data points、labels遠離繪圖區(qū)域的邊緣氨淌。

ggplot(mpg, aes(displ, hwy)) +
  geom_point(aes(colour = class)) +
  geom_point(size = 3, shape = 1, data = best_in_class) +
  ggrepel::geom_label_repel(aes(label = model), data = best_in_class)

??幾個小例子:
??1)用labels代替legend直接放在圖片里:首先確定labels的位置泊愧,可以是median(每種class),另外需關(guān)閉圖例:theme(legend.position = "none")盛正。
??2)將一個label放在圖片的角落:label data需要放在數(shù)據(jù)框里删咱。
??2)將一個label放在圖片的邊緣:將label的坐標(biāo)設(shè)置為Inf

其他幫助注釋圖片的工具

??1)geom_hline()geom_vline()為圖片添加參考線豪筝,推薦設(shè)置:厚度(size=2)痰滋;顏色(color=white)摘能;畫在原始數(shù)據(jù)層的下面,目的是不會喧賓奪主敲街。
??2)geom_rect()在感興趣的點周圍畫方框徊哑,方框的邊界用xminxmax聪富、ymin莺丑、ymax
??3)geom_segment()墩蔓,設(shè)置arrow參數(shù)畫一個箭頭指向一個點梢莽,用xy奸披、xend昏名、yend定義箭頭的開始和結(jié)束位置。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阵面,一起剝皮案震驚了整個濱河市轻局,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌样刷,老刑警劉巖仑扑,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異置鼻,居然都是意外死亡镇饮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門箕母,熙熙樓的掌柜王于貴愁眉苦臉地迎上來储藐,“玉大人,你說我怎么就攤上這事嘶是「撇” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵聂喇,是天一觀的道長辖源。 經(jīng)常有香客問我,道長授帕,這世上最難降的妖魔是什么同木? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮跛十,結(jié)果婚禮上彤路,老公的妹妹穿的比我還像新娘。我一直安慰自己芥映,他們只是感情好洲尊,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布远豺。 她就那樣靜靜地躺著,像睡著了一般坞嘀。 火紅的嫁衣襯著肌膚如雪躯护。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天丽涩,我揣著相機與錄音棺滞,去河邊找鬼。 笑死矢渊,一個胖子當(dāng)著我的面吹牛继准,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播矮男,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼移必,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毡鉴?” 一聲冷哼從身側(cè)響起崔泵,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎猪瞬,沒想到半個月后憎瘸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡撑螺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年含思,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甘晤。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖饲做,靈堂內(nèi)的尸體忽然破棺而出线婚,到底是詐尸還是另有隱情,我是刑警寧澤盆均,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布塞弊,位于F島的核電站,受9級特大地震影響泪姨,放射性物質(zhì)發(fā)生泄漏游沿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一肮砾、第九天 我趴在偏房一處隱蔽的房頂上張望诀黍。 院中可真熱鬧,春花似錦仗处、人聲如沸眯勾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吃环。三九已至也颤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間郁轻,已是汗流浹背翅娶。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留好唯,地道東北人故觅。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像渠啊,于是被迫代替她去往敵國和親输吏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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

  • 作者:嚴濤浙江大學(xué)作物遺傳育種在讀研究生(生物信息學(xué)方向)偽碼農(nóng)替蛉,R語言愛好者贯溅,愛開源 ggplot2學(xué)習(xí)筆記之圖...
    wanghaihua888閱讀 2,622評論 0 6
  • 簡介 文章較長,點擊直達我的博客躲查,瀏覽效果更好它浅。本文內(nèi)容基本是來源于STHDA,這是一份十分詳細的ggplot2使...
    taoyan閱讀 51,111評論 7 159
  • 8 注釋 在構(gòu)建數(shù)據(jù)可視化時镣煮,通常需要對顯示的數(shù)據(jù)進行注釋姐霍。從概念上講,注釋為圖提供元數(shù)據(jù):也就是說典唇,它提供關(guān)于所...
    denghb001閱讀 3,469評論 0 3
  • preparation: use library() to load the package and use st...
    搬磚肥宅閱讀 1,344評論 0 1
  • 1. ggplot() data:數(shù)據(jù)mapping:美學(xué)映射 aes()x, y:設(shè)置x镊折、y的值color:根據(jù)...
    草莓桃子酪酪閱讀 826評論 0 5