《R數(shù)據(jù)可視化手冊》學習筆記3---條形圖(2)頻數(shù)條形圖

寫在前面。

條形圖一般用來展示不同分類下(x軸)某個數(shù)值型變量的取值(y軸)。注意,條形的高度,有時是變量的頻數(shù),有時是變量的取值本身,需要注意區(qū)分。

條形圖

我沒有按照書中的章節(jié)順序,而是根據(jù)條形高度映射數(shù)據(jù)類型圖形位置圖形元素進行了分類整合,使脈絡更清晰,知識點更集中

同時隨著ggplot2包的更新,書中的一些用法也已經(jīng)不適用了,因此會做一些更正。

所使用的一些示例數(shù)據(jù)需要安裝加載包gcookbook,同時也需要加載ggplot2

if(!require(gcookbook) ) install.packages("gcookbook")
library(gcookbook)
library(ggplot2)

另外,ggplot2繪圖的常用基本語句需要知道:

ggplot(data = , aes(x= , y = ) ) + geom_xxxx() + ...

1. 條形高度

如上文所說,條形的高度有時映射的是變量的取值本身,有時是變量的頻數(shù)統(tǒng)計值。

1.2 頻數(shù)條形圖

如果數(shù)據(jù)中每一行觀測對應的就是一個樣本,如何繪制樣本頻數(shù)分布條形圖呢?

使用示例數(shù)據(jù)diamonds數(shù)據(jù)集,它記錄了鉆石的品質(zhì)數(shù)據(jù)

> str(diamonds)
tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)
 $ carat  : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
 $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
 $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
 $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
 $ depth  : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
 $ table  : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
 $ price  : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
 $ x      : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
 $ y      : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
 $ z      : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

使用geom_bar(),同時y不映射變量,那么geom_bar()會默認統(tǒng)計x映射變量的頻數(shù)。本例中x離散型變量

ggplot(data = diamonds, aes(x= cut )) + geom_bar()

[圖片上傳失敗...(image-b99147-1694479057080)]


可以看到,有20000顆以上的鉆石切割得最佳。

如果x映射的變量是連續(xù)型,我們會得到一張每個x值對應的頻數(shù)分布直方圖

ggplot(data = diamonds, aes(x= carat )) + geom_bar()

[圖片上傳失敗...(image-fa3b48-1694479057080)]

注意,和書中說的不同,現(xiàn)在默認情況下,<font color=red>geom_bar()和geom_histogram()繪制連續(xù)型變量的圖形還是不同的。</font>

ggplot(data = diamonds, aes(x= carat )) + geom_histogram()

[圖片上傳失敗...(image-685200-1694479057080)]


不過,上述geom_histogram()和下面的語句是等價的:

ggplot(data = diamonds, aes(x= carat )) + stat_bin()

以上,條形的高度x軸映射變量的關系就講這么多。


?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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