饼图(Pie Chart)是一种常见的统计图表,用于展示数据集中各部分的相对比例。它通常呈圆形,被分割成扇形,每个扇形的大小表示相应数据类别在整个数据集中所占的比例。饼图常用于展示数据的分布情况、各部分之间的相对比例以及整体和各部分之间的关系。
以下是饼图的主要特征和组成部分:
-
圆形表示整体: 饼图呈圆形,代表整个数据集。圆形的面积或角度表示总体的百分比或角度。
-
扇形表示各部分: 数据集被分成各个扇形,每个扇形代表数据集中的一个类别或部分。扇形的大小表示该部分在整体中所占的比例。
-
标签: 每个扇形通常附有标签,用于标识该部分所代表的具体类别或数据项。标签通常位于扇形的外部,与相应的扇形相连。
-
颜色: 不同的扇形通常使用不同的颜色,以帮助视觉区分各个部分。颜色选择需要考虑清晰度、对比度和可读性。
-
百分比或角度: 饼图通常伴随着每个扇形的百分比或角度标注,以提供具体的数据信息。
使用饼图有助于直观地展示数据的相对比例,特别适用于呈现数据集中各部分的相对重要性。然而,有时候,当数据部分数量较多或差异不明显时,饼图可能不是最佳选择,因为在这些情况下理解图表可能较为困难。在这种情况下,其他图表类型,如条形图或堆积图,可能更为合适。
示例
library(tidyverse)
library(ggsci)
library(ggrepel)
library(cowplot)
data <- read.csv(file = 'browers.csv') %>%
arrange(desc(version)) %>%
mutate(cumsum_share = cumsum(share))
data_sum <- group_by(data, browser) %>%
summarise(browser_share = sum(share)) %>%
arrange(desc(browser)) %>%
mutate(cumsum_browser_share = cumsum(browser_share))
ggplot(data = data_sum, aes(x = 1,
y = browser_share)) +
geom_col(color = "white", width = 1, aes(fill = browser)) +
geom_text(data = filter(data_sum, browser_share >=5),
size = 3,
color = "white",
aes(y = cumsum_browser_share - 0.5 * browser_share,
label = str_c(browser, "\n", browser_share, "%"))) +
geom_text_repel(data = filter(data_sum, browser_share < 5),
size = 3,
nudge_y = 7,
segment.color = "white",
min.segment.length = 0,
color = "white",
aes(y = cumsum_browser_share - 0.5 * browser_share,
label = str_c(browser, "\n", browser_share, "%"))) +
scale_fill_npg()
-
数据准备:
- 通过
read.csv()
函数读取名为 'browers.csv' 的CSV文件,并按浏览器版本降序排列。 - 使用
mutate()
函数计算累积份额(cumsum_share
)。
- 通过
-
汇总数据:
- 使用
group_by()
和summarise()
函数,对每个浏览器进行分组,计算每个浏览器的份额总和。 - 对结果按照浏览器名称降序排列,并计算累积浏览器份额(
cumsum_browser_share
)。
- 使用
-
绘制图表:
- 使用
ggplot()
函数创建基础图表对象,映射数据集和设置基础绘图参数。 - 使用
geom_col()
函数添加柱状图层,设置填充颜色为浏览器,并设置柱状图宽度和边框颜色。 - 使用
geom_text()
函数添加文本标签层,显示浏览器份额大于等于5%的部分,设置文本大小、颜色和位置。 - 使用
geom_text_repel()
函数添加避免重叠的文本标签层,显示浏览器份额小于5%的部分,设置文本大小、颜色、位置、偏移、线段颜色等参数。
- 使用
-
调色板设置:
- 使用
scale_fill_npg()
函数来设置填充颜色的调色板
- 使用
![](https://img.haomeiwen.com/i27313279/4f804056979a2521.png)
ggplot(data = data_sum, aes(x = 1,
y = browser_share)) +
geom_col(color = "white", width = 1, aes(fill = browser)) +
geom_text(data = filter(data_sum, browser_share >=5),
size = 3,
color = "white",
aes(y = cumsum_browser_share - 0.5 * browser_share,
label = str_c(browser, "\n", browser_share, "%"))) +
geom_text_repel(data = filter(data_sum, browser_share < 5),
size = 3,
nudge_y = 7,
segment.color = "white",
min.segment.length = 0,
color = "white",
aes(y = cumsum_browser_share - 0.5 * browser_share,
label = str_c(browser, "\n", browser_share, "%"))
) +
scale_fill_npg() +
theme_nothing() +
coord_polar(theta = "y")
这段代码使用了ggplot2
创建一个极坐标饼图,展示了浏览器份额数据,并利用geom_text
和geom_text_repel
添加了标签,最后通过scale_fill_npg()
设置了填充颜色的调色板,theme_nothing()
去除了默认的主题,coord_polar(theta = "y")
将图表转换为极坐标。
-
创建基础图表对象:
- 使用
ggplot()
函数创建一个基础图表对象,数据集为data_sum
,映射x
轴为1(在极坐标中表示一个完整的圆),y
轴为browser_share
。
- 使用
-
添加柱状图层:
- 使用
geom_col()
函数添加柱状图层,设置柱体颜色为白色,宽度为1,颜色映射为浏览器名称。
- 使用
-
添加文本标签层:
- 使用
geom_text()
函数添加文本标签层,显示浏览器份额大于等于5%的部分,设置文本大小、颜色和位置。
- 使用
-
添加避免重叠的文本标签层:
- 使用
geom_text_repel()
函数添加避免重叠的文本标签层,显示浏览器份额小于5%的部分,设置文本大小、颜色、位置、偏移、线段颜色等参数。
- 使用
-
调色板设置:
- 使用
scale_fill_npg()
函数设置填充颜色的调色板。
- 使用
-
主题设置:
- 使用
theme_nothing()
函数去除默认的主题。
- 使用
-
极坐标转换:
- 使用
coord_polar(theta = "y")
函数将图表转换为极坐标,使得柱状图呈现为饼图的形式。
- 使用
![](https://img.haomeiwen.com/i27313279/2dfb6ae3717fc8aa.png)
网友评论