棒棒糖圖,“望文生義”,就是長得像棒棒糖的圖。聽起來就很可愛是不是?今天就讓我們一起欣賞一下棒棒糖圖。
什么是棒棒糖圖
首先讓我們來看幾張棒棒糖圖。可以發現實際上就是一根柱子加上一個圓,其實類似傳統的柱狀圖。但是它可以給我們更多的信息,因為圓和下面的棒子可以代表同一組數據,也可以代表兩組數據。“糖”和“棒子”的顏色也一樣,可以表示同一個信息也可以表示不同維度的信息。另外,我們還可以變成雙頭棒棒糖,在棒子的兩端分別展現不同的數據。不喜歡傳統的圓形?想要親手DIY?也沒有問題,我們可以把傳統的圓形糖換成其他圖片(比如漫威),以更加直觀的展示信息。我們也可以在圈中標記具體的數值,讓讀者一目了然。
怎么做棒棒糖圖
1)需要什么格式的數據
我們用R中自帶的一個數據——mtcars。該數據來源于1974年Motor Trend雜志,是關于不同車型的設計和性能的數據統計:
[, 1] mpg Miles/(US) gallon
[, 2] cyl Number of cylinders
[, 3] disp Displacement (cu.in.)
[, 4] hp Gross horsepower
[, 5] drat Rear axle ratio
[, 6] wt Weight (1000 lbs)
[, 7] qsec 1/4 mile time
[, 8] vs Engine (0 = V-shaped, 1 = straight)
[, 9] am Transmission (0 = automatic, 1 = manual)
[,10] gear Number of forward gears
[,11] carb Number of carburetors
稍微對數據進行一點處理:
# Load data
data("mtcars")
dfm <- mtcars
# 轉為factor類型的數據
dfm$cyl <- as.factor(dfm$cyl)
# 增加一列name
dfm$name <- rownames(dfm)
> head(dfm)
mpg cyl disp hp drat wt qsec vs am gear carb name
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Datsun 710
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet 4 Drive
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 Hornet Sportabout
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 Valiant
2)如何作圖
本次使用ggpubr包進行作圖。
library(ggpubr)
ggdotchart(dfm, x = "name", y = "mpg",
color = "cyl", # 按照cyl填充顏色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 修改顏色
sorting = "ascending",
add = "segments", # 添加棒子
ggtheme = theme_pubr(), # 改變主題
xlab=""
)
ggdotchart(dfm, x = "name", y = "mpg",
color = "cyl", # 按照cyl填充顏色
palette = c("#00AFBB", "#E7B800", "#FC4E07"), # 修改顏色
sorting = "descending",
add = "segments", # 添加棒子
add.params = list(color = "lightgray", size = 1.5),#改變棒子參數
rotate = TRUE, # 方向轉為垂直
group = "cyl",
dot.size = 6, # 改變點的大小
label = round(dfm$mpg), # 添加label
font.label = list(color = "white", size = 9,
vjust = 0.5), # 設置label參數
ggtheme = theme_pubr(), # 改變主題
xlab=""
)
往期 R數據可視化 分享
R數據可視化8: 金字塔圖和偏差圖
R數據可視化7: 氣泡圖 Bubble Plot
R數據可視化6: 面積圖 Area Chart
R數據可視化5: 熱圖 Heatmap
R數據可視化4: PCA和PCoA圖
R數據可視化3: 直方/條形圖
R數據可視化2: 箱形圖 Boxplot
R數據可視化1: 火山圖