寫在前面。
條形圖一般用來展示不同分類下(x軸)某個數值型變量的取值(y軸)。注意,條形的高度,有時是變量的頻數
,有時是變量的取值本身
,需要注意區分。
條形圖
我沒有按照書中的章節順序,而是根據條形高度映射數據類型
、圖形位置
和圖形元素
進行了分類整合,使脈絡更清晰,知識點更集中。
同時隨著ggplot2包的更新,書中的一些用法也已經不適用了,因此會做一些更正。
所使用的一些示例數據需要安裝加載包gcookbook,同時也需要加載ggplot2。
if(!require(gcookbook) ) install.packages("gcookbook")
library(gcookbook)
library(ggplot2)
另外,ggplot2繪圖的常用基本語句需要知道:
ggplot(data = , aes(x= , y = ) ) + geom_xxxx() + ...
1. 條形高度
如上文所說,條形的高度有時映射的是變量的取值本身,有時是變量的頻數統計值。
1.1 簡單條形圖
數據中,一個變量表示在x
軸的位置,另一個變量表示每個條形的高度,那么映射的也就是變量取值本身。
我們使用數據pg_mean
作為示例數據。
> str(pg_mean)
'data.frame': 3 obs. of 2 variables:
$ group : Factor w/ 3 levels "ctrl","trt1",..: 1 2 3
$ weight: num 5.03 4.66 5.53
基于此,我們使用ggplot()
函數和geom_bar(stat = "identity")
:
ggplot(data = pg_mean, aes(x= group, y =weight)) + geom_bar(stat = "identity")
[圖片上傳失敗...(image-aacbac-1694394475903)]
上例子,x
軸映射的變量離散型變量,如果是連續型變
量,會在最大最小值之間取所有可能值
作為x軸映射值
。
以BOD
數據集作為示例數據集:
> BOD
Time demand
1 1 8.3
2 2 10.3
3 3 19.0
4 4 16.0
5 5 15.6
6 7 19.8
繪圖如下:
ggplot(data = BOD, aes(x= Time, y =demand)) + geom_bar(stat = "identity")
[圖片上傳失敗...(image-cd9d89-1694394475903)]
可以使用factor
函數將x
取值轉換為離散型數據
:
ggplot(data = BOD, aes(x= factor(Time), y =demand)) + geom_bar(stat = "identity")
[圖片上傳失敗...(image-32b0ee-1694394475903)]
可以看到,x
轉換前后圖形是不同的。