美文网首页
科研绘图模板之多维饼图

科研绘图模板之多维饼图

作者: Bioinfor生信云 | 来源:发表于2024-01-19 20:02 被阅读0次

饼图(Pie Chart)是一种常见的统计图表,用于展示数据集中各部分的相对比例。它通常呈圆形,被分割成扇形,每个扇形的大小表示相应数据类别在整个数据集中所占的比例。饼图常用于展示数据的分布情况、各部分之间的相对比例以及整体和各部分之间的关系。

以下是饼图的主要特征和组成部分:

  1. 圆形表示整体: 饼图呈圆形,代表整个数据集。圆形的面积或角度表示总体的百分比或角度。

  2. 扇形表示各部分: 数据集被分成各个扇形,每个扇形代表数据集中的一个类别或部分。扇形的大小表示该部分在整体中所占的比例。

  3. 标签: 每个扇形通常附有标签,用于标识该部分所代表的具体类别或数据项。标签通常位于扇形的外部,与相应的扇形相连。

  4. 颜色: 不同的扇形通常使用不同的颜色,以帮助视觉区分各个部分。颜色选择需要考虑清晰度、对比度和可读性。

  5. 百分比或角度: 饼图通常伴随着每个扇形的百分比或角度标注,以提供具体的数据信息。

使用饼图有助于直观地展示数据的相对比例,特别适用于呈现数据集中各部分的相对重要性。然而,有时候,当数据部分数量较多或差异不明显时,饼图可能不是最佳选择,因为在这些情况下理解图表可能较为困难。在这种情况下,其他图表类型,如条形图或堆积图,可能更为合适。

示例

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()
  1. 数据准备:
    • 通过read.csv()函数读取名为 'browers.csv' 的CSV文件,并按浏览器版本降序排列。
    • 使用mutate()函数计算累积份额(cumsum_share)。
  1. 汇总数据:

    • 使用group_by()summarise()函数,对每个浏览器进行分组,计算每个浏览器的份额总和。
    • 对结果按照浏览器名称降序排列,并计算累积浏览器份额(cumsum_browser_share)。
  2. 绘制图表:

    • 使用ggplot()函数创建基础图表对象,映射数据集和设置基础绘图参数。
    • 使用geom_col()函数添加柱状图层,设置填充颜色为浏览器,并设置柱状图宽度和边框颜色。
    • 使用geom_text()函数添加文本标签层,显示浏览器份额大于等于5%的部分,设置文本大小、颜色和位置。
    • 使用geom_text_repel()函数添加避免重叠的文本标签层,显示浏览器份额小于5%的部分,设置文本大小、颜色、位置、偏移、线段颜色等参数。
  3. 调色板设置:

    • 使用scale_fill_npg()函数来设置填充颜色的调色板
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_textgeom_text_repel添加了标签,最后通过scale_fill_npg()设置了填充颜色的调色板,theme_nothing()去除了默认的主题,coord_polar(theta = "y")将图表转换为极坐标。

  1. 创建基础图表对象:

    • 使用ggplot()函数创建一个基础图表对象,数据集为data_sum,映射x轴为1(在极坐标中表示一个完整的圆),y轴为browser_share
  2. 添加柱状图层:

    • 使用geom_col()函数添加柱状图层,设置柱体颜色为白色,宽度为1,颜色映射为浏览器名称。
  3. 添加文本标签层:

    • 使用geom_text()函数添加文本标签层,显示浏览器份额大于等于5%的部分,设置文本大小、颜色和位置。
  4. 添加避免重叠的文本标签层:

    • 使用geom_text_repel()函数添加避免重叠的文本标签层,显示浏览器份额小于5%的部分,设置文本大小、颜色、位置、偏移、线段颜色等参数。
  5. 调色板设置:

    • 使用scale_fill_npg()函数设置填充颜色的调色板。
  6. 主题设置:

    • 使用theme_nothing()函数去除默认的主题。
  7. 极坐标转换:

    • 使用coord_polar(theta = "y")函数将图表转换为极坐标,使得柱状图呈现为饼图的形式。

相关文章

网友评论

      本文标题:科研绘图模板之多维饼图

      本文链接:https://www.haomeiwen.com/subject/ideyndtx.html