《R資料視覺化手冊》一3 9 新增資料標籤

2021-09-23 15:54:14 字數 3997 閱讀 3700

問題如何給條形圖新增資料標籤?

方法在繪圖命令中加上geom_text()即可為條形圖新增資料標籤。執行命令時,需要分別指定乙個變數對映給x、y和標籤本身。通過設定vjust(豎直調整資料標籤位置)可以將標籤位置移動至條形圖頂端的上方或者下方,如圖3-22所示。

library(gcookbook) # 為了使用資料

# 在條形圖頂端下方

ggplot(cabbage_exp, aes(x=interaction(date, cultivar), y=weight)) +

geom_bar(stat="identity") +

geom_text(aes(label=weight), vjust=1.5, colour="white")

# 在條形圖頂端上方

注意,當資料標籤被置於條形圖頂端時,它們可能會被遮擋。為了避免這個問題,可以參見8.2節的內容。

討論在圖3-22中,資料標籤的y軸座標位於每個條形的頂端中心位置;通過設定豎直調整(vjust)可以將資料標籤置於條形圖頂端的上方或者下方。這種做法的不足之處在於當資料標籤被置於條形圖頂端上方時有可能使資料標籤溢位繪圖區域。為了修正這個問題,我們可以手動設定y軸的範圍,也可以保持豎直調整不變,而令資料標籤的y軸座標高於條形圖頂端。後一種辦法的不足之處在於,當你想將資料標籤完全置於條形圖頂端上方或者下方的時候,豎直方向調整的幅度依賴於y軸的資料範圍;而更改vjust時,資料標籤離條形頂端的距離會根據條形圖的高度自動進行調整。

# 將y軸上限變大

ggplot(cabbage_exp, aes(x=interaction(date, cultivar), y=weight)) +

geom_bar(stat="identity") +

geom_text(aes(label="weight"), vjust=-0.2) +

ylim(0, max(cabbage_exp$weight)*1.05)

# 設定標籤的y軸位置使其略高於條形圖頂端——y軸範圍會自動調整

ggplot(cabbage_exp, aes(x=interaction(date, cultivar), y=weight)) +

geom_bar(stat="identity") +

geom_text(aes(y=weight+0.1, label=weight))

對於簇狀條形圖,需要設定position=position_dodge()並給其乙個引數來設定分類間距。分類間距的預設值是0.9,因為簇狀條形圖的條形更窄,所以,需要使用字型大小(size)來縮小資料標籤的字型大小以匹配條形寬度。資料標籤的預設字型大小是5,這裡我們將字型大小設定為3使其看起來更小(見圖3-23)。

向堆積條形圖新增資料標籤之前,要先對每組條形對應的資料進行累積求和。在進行本操作之前,須保證資料的合理排序,否則,可能計算出錯誤的累積和。我們可以用plyr包中的arrange()函式完成上述操作,plyr包是乙個隨ggplot2包載入的軟體包。

library(plyr)

# 根據日期和性別對資料進行排序

ce

確認資料合理排序之後,我們可以借助ddply()函式以date為分組變數對資料進行分組,並分別計算每組資料對應的變數weight的累積和。

# 計算累積和

ce cecultivar date weight    sd n     se percent_weight label_y

c39 d16  3.18 0.9566144 10 0.30250803    58.45588  3.18

c52 d16  2.26 0.4452215 10 0.14079141    41.54412  5.44

c39 d20  2.80 0.2788867 10 0.08819171    47.37733  2.80

c52 d20  3.11 0.7908505 10 0.25008887    52.62267  5.91

c39 d21  2.74 0.9834181 10 0.31098410    65.08314  2.74

c52 d21  1.47 0.2110819 10 0.06674995    34.91686  4.21

ggplot(ce, aes(x=date, y=weight, fill=cultivar)) +

geom_bar(stat="identity") +

geom_text(aes(y=label_y, label=weight), vjust=1.5, colour="white")

結果如圖3-24所示。

使用資料標籤時,對堆疊順序的調整最好是通過在計算累積和之前修改因子的水平順序(參見15.8節)來完成。另一種修改堆疊順序的方法是在標度中指定breaks引數,但在這裡此方法並不合適,因為累計求和的順序與堆疊的順序並不一致。

如果想把資料標籤置於條形中部(見圖3-25),須對累計求和的結果加以調整,並同時略去geom_bar()函式中對y偏移量(offset)的設定:

ce 

#計算y軸的位置,將資料標籤置於條形中部

為了得到效果更好的條形圖(見圖3-26),我們修改一下圖例順序和顏色,將資料標籤置於條形中間,同時通過字型大小引數(size)縮小標籤字型大小,並呼叫paste函式在標籤後面新增「kg」,為了使得標籤保留兩位小數我們還需呼叫format函式:

另見更多關於控制文字格式的內容可參見9.2節。

更多關於分組轉換資料的內容可參見15.6節。

《R資料視覺化手冊》 3 9 新增資料標籤

問題如何給條形圖新增資料標籤?方法在繪圖命令中加上geom text 即可為條形圖新增資料標籤。執行命令時,需要分別指定乙個變數對映給x y和標籤本身。通過設定vjust 豎直調整資料標籤位置 可以將標籤位置移動至條形圖頂端的上方或者下方,如圖3 22所示。library gcookbook 為了使...

《R資料視覺化手冊》 導讀

r資料視覺化手冊 幾年前讀研時我開始用r,主要用來分析我在科研工作中收集到的資料。我使用r首先是想擺脫spss這樣的統計軟體的禁錮,即嚴格的環境和死板的分析。更何況,r是免費的,所以我用不著說服別人為我購買一套這樣的軟體 這對乙個窮研究生來說是相當的重要!此後,隨著我對r的了解不斷深入,我才發現原來...

資料視覺化 R語言實現網路視覺化

最近在學習貝葉斯網路,當用k2演算法建立了貝葉斯網路結構之後,用r語言工具可以很清楚地實現網路視覺化。例如,在鐵達尼號資料集中,最後生成的貝葉斯網路結構如下 age,portembarked,numparentschildren,age numparentschildren,passengercla...