R數據可視化9:棒棒糖圖 Lollipop Chart

棒棒糖圖,“望文生義”,就是長得像棒棒糖的圖。聽起來就很可愛是不是?今天就讓我們一起欣賞一下棒棒糖圖。

什么是棒棒糖圖

首先讓我們來看幾張棒棒糖圖。可以發現實際上就是一根柱子加上一個圓,其實類似傳統的柱狀圖。但是它可以給我們更多的信息,因為圓和下面的棒子可以代表同一組數據,也可以代表兩組數據。“糖”和“棒子”的顏色也一樣,可以表示同一個信息也可以表示不同維度的信息。另外,我們還可以變成雙頭棒棒糖,在棒子的兩端分別展現不同的數據。不喜歡傳統的圓形?想要親手DIY?也沒有問題,我們可以把傳統的圓形糖換成其他圖片(比如漫威),以更加直觀的展示信息。我們也可以在圈中標記具體的數值,讓讀者一目了然。

from Google圖片搜索

from tableau website

怎么做棒棒糖圖

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: 火山圖

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