Tidyverse自学笔记-条形图类似图

8.3.4 条形图扩展

1、不等宽柱状图(variable width column chart)

不等宽柱形图是常规柱形图的一种变化形式,它用柱形的高度反映一个数值的大小,同时用柱形的宽度反映另一个数值的大小,多用于市场调查研究、维度分析等方面。
geom_rect()函数可以根据右下角坐标(xmin,ymin)和左上角坐标(xmax,ymax)绘制矩形,矩形的宽度(width)为max-xmin对应X轴变量的数值大小;矩形的高度(height)为ymax-ymin对应Y轴变量的数值大小。

data3 <- tibble(Ax = c(1:5, 8), By = 6:11, cg = rep(c("a", "b"), each = 3)) # 创建数据集data3。
data4 <- data3 %>%
mutate(xmax = cumsum(Ax)) %>%
mutate(xmin = xmax - Ax) %>%
mutate(label = (xmin + xmax) / 2) # 构建数据集data4.
ggplot(data4) +
geom_rect(aes(xmin = xmin, xmax = xmax, ymin = 0, ymax = By, fill = cg), colour = "black", size = 0.25) +
geom_text(aes(x = label, y = By, label = By), vjust = -0.5, colour = "blue") + geom_text(aes(x = label, y = 0, label = cg), vjust = 1) + theme_bw()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.## ℹ Please use `linewidth` instead.

2、南丁格尔玫瑰图

南丁格尔玫瑰图(Nightingale rose chart,也被称为 coxcomb chart、polar area diagram)即极坐标柱形图,是一种圆形的柱形图。 普通柱状图分布在直角坐标系,使用y坐标轴对于的数值表示数据的大小;南丁格尔玫瑰图分布在极坐标系,使用圆弧的半径长短表示数据的大小(数量的多少),每个数据类别或间隔在径向图上划分为相等分段,每个分 段从中心延伸多远(与其所代表的数值成正比)取决于极坐标轴线。因此,从极坐标中心延伸出来的每一环可以当作标尺使用,用来表示分段大小并代表较高的数值。

data1 %>% ggplot(aes(x = nitrogen, y = v1, fill = nitrogen)) +
geom_bar(stat = "identity", width = 0.4,
position = position_dodge(width = 0.7)) + coord_polar(theta = "x", start = 0) # 南丁格尔玫瑰图。

3、径向柱形图(circular barplot)
径向柱形图也被称为圆形柱形图或星图。
每个圆圈表示一个数值刻度,而径向分隔线(从中心延伸出来的线)则用作区分不同类别或间隔(如果是直方图)。
通常,标尺上的较低值从中心开始,并随每个圆圈增加。但是,也可以在径向柱形图上显示负值,方法是从任何一个外部圆(从中心一个圆)开始为零,并且将其中的所有圆用作负值。条形图通常从中心开始并向外延伸,但是可以用可变的起点来显示范围。

data1 %>% ggplot(aes(x = nitrogen, y = v1)) +
geom_bar(stat = "identity", width = 0.4, position = position_dodge(width = 0.7)) +
coord_polar() +
ylim(c(-1, 2)) + theme_light()

4、棒棒糖图(lollipop chart)

棒棒糖图传达了与柱形图或者条形图相同的信息,只是将矩形转变成线条,这样可减少展示空间,重点放在数据点上,从而看起来更加简洁、美观。相对柱形图与条形图,棒棒糖图更加适合数据量比较多的情况。

data2 <- mtcars[5:8] # 选取mtcars数据集5到8列数据为例。
ggplot(data2, aes(wt, rownames(data2))) +
geom_point(shape = 21, size = 3, fill = "red") +
geom_segment(aes(x = 0,
xend = wt,
y = rownames(data2),
yend = rownames(data2)),
colour = "blue") +
theme_bw() + labs(x = "Weight of cars(t)", y = "Brand of cars") # 棒棒糖图。

5、克利夫兰点图(Cleveland’s dot plot) 

克利夫兰点图(Cleveland’s dot plot):也就是我们常用的滑珠散点图,非常类似棒棒糖图,只是没有连接的线条,重点强调数据的排序展示及互相之间的差距。

ggplot(data2, aes(wt, rownames(data2))) + 
geom_point(shape = 21, size = 3, fill = "black") +
theme_bw() + labs(x = "Weight of cars(t)", y = "Brand of cars")

6、哑铃图(dumbbell plot)
可以看成多数据系列的克利夫兰点图,只是使用直线连接了两个数据系列的数据点。
哑铃图主要用于:
①展示在同一时间段两个数据点的相对位置(增加或者减少);②比较两个类别之间的数据值差别。

data1 %>% 
select(nitrogen, variety, v1) %>%
group_by(nitrogen, variety) %>%
summarise(v1_mean = mean(v1)) %>%
ggplot(aes(x = v1_mean, y = nitrogen, fill = variety)) + geom_point(aes(colour = variety), size =4) + geom_line(aes(group = nitrogen)) # 哑铃图。
## `summarise()` has grouped output by 'nitrogen'. You can override using the## `.groups` argument.

参考资料

  • ggplot2: 数据分析与图形艺术,西安交通大学出版社,2013.

  • R语言数据可视化之美:专业图表绘制指南,电子工业出版社,2019.

  • R数据科学,人民邮电出版社,2018.

  • R数据可视化手册,人民邮电出版社,2014.

  • R语言作图-哑铃图,https://cloud.tencent.com/developer/article/1802011

  • - END -

    本文使用 文章同步助手 同步

    ©著作权归作者所有,转载或内容合作请联系作者
    平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

    推荐阅读更多精彩内容