科研绘图模板之条形图

2023-12-28  本文已影响0人  Bioinfor生信云

条形图

条形图(Bar Chart)是一种常用于展示数据分布和比较不同类别之间关系的图表类型。它通过水平或垂直的长方形条形来表示数据,每个条形的长度(或高度)与相应类别的数值大小相关。以下是条形图的一些关键特征和使用方法:

组成要素:

  1. 条形(Bar): 每个数据类别对应一个条形,其长度(或高度)表示该类别的数值大小。

  2. 轴(Axis): 条形图通常有两个轴,一个用于表示数据的类别(通常是横轴),另一个用于表示数值大小(通常是纵轴)。

  3. 类别(Category): 数据被分为不同的类别,每个类别对应一个条形。类别可以是任何可以进行比较的项目,例如时间、地区、产品等。

  4. 数值刻度(Scale): 轴上的刻度表示数值的大小,有助于读取和理解每个条形的数值。

类型:

  1. 垂直条形图(Vertical Bar Chart): 条形是垂直排列的,通常横轴表示类别,纵轴表示数值大小。

  2. 水平条形图(Horizontal Bar Chart): 条形是水平排列的,通常横轴表示数值大小,纵轴表示类别。

用途:

  1. 比较数据: 条形图是一种直观的比较工具,可以清晰地比较不同类别之间的数值大小。

  2. 显示趋势: 通过排列在轴上的顺序,可以突出数据的趋势和相对大小。

  3. 分布情况: 条形图也可以用于显示数据的分布情况,特别是在分组数据的情境中。

  4. 突出异常值: 当数据中存在异常值或者某些类别与其他类别有明显差异时,条形图可以帮助突出这些差异。

制作步骤:

  1. 选择数据: 选择需要比较或展示的数据集。

  2. 确定类别: 确定数据的类别,每个类别对应一个条形。

  3. 绘制条形图: 使用图表制作工具(如Excel、matplotlib等)绘制条形图,将数据映射到相应的条形上。

  4. 添加标签和标题: 为图表添加轴标签、数据标签和标题,以增加可读性。

  5. 解释图表: 解释条形图,突出关键趋势、比较结果或分析数据分布。

示例代码

library(tidyverse)
data("mtcars") #R语言自带数据集
mtcars_tbl <- rownames_to_column(mtcars, var = 'car') %>%
  mutate(cyl = factor(cyl)) # 转换为因子
head(mtcars_tbl)
library(ggsci)
ggplot(mtcars_tbl, aes(x = car, y = mpg)) +
  geom_bar(stat = 'identity', 
           aes(fill = cyl), 
           width = 0.5) +
  scale_fill_npg() +
  labs(fill = 'cyl') +
  theme_classic() +
  theme(axis.title.x = element_blank(),
        axis.text.x = element_text(angle = 45, 
                                   hjust = 0.5, 
                                   vjust = 0.5),
        legend.position = 'top')

# 油耗降序排列
mtcars_tbl <- arrange(mtcars_tbl, desc(mpg))
# 设置 car 的因子顺序为表中顺序
mtcars_tbl <- mutate(mtcars_tbl, car = factor(car, levels = car))

ggplot(mtcars_tbl, aes(x = car, y = mpg)) +
  geom_col(aes(fill = factor(cyl)), 
           width = 0.5) +
  scale_fill_npg() +
  labs(fill = 'cyl') +
  theme_classic() +
  theme(axis.title.x = element_blank(),
        axis.text.x = element_text(angle = 45, 
                                   hjust = 0.5, 
                                   vjust = 0.5),
        legend.position = 'top'),
        legend.direction = "horizontal")

# mpg 降序排列
mtcars_tbl <- arrange(mtcars_tbl, cyl, mpg)
# 设置 car 的因子顺序为表中顺序
mtcars_tbl <- mutate(mtcars_tbl, car = factor(car, levels = car))
# 画图的代码不需要任何修改
ggplot(mtcars_tbl, aes(x = car, y = mpg)) +
  geom_col(aes(fill = factor(cyl)), 
           width = 0.5) +
  scale_fill_npg() +
  labs(fill = 'cyl') +
  theme_classic() +
  theme(axis.title.x = element_blank(),
        axis.text.x = element_text(angle = 45, 
                                   hjust = 0.5,
                                   vjust = 0.5),
        legend.position = ('top'),
        legend.direction = "horizontal")
mtcars_tbl$mpg_z <- 
  (mtcars_tbl$mpg -mean(mtcars_tbl$mpg))/sd(mtcars_tbl$mpg)

mtcars_tbl$mpg_grp <- factor(ifelse(mtcars_tbl$mpg_z > 0, 
                                    "hight", "low"), 
                             levels = c("hight", "low"))

mtcars_tbl$car <- fct_reorder(mtcars_tbl$car, 
                              mtcars_tbl$mpg_z)

ggplot(mtcars_tbl, aes(x = car, y = mpg_z)) +
  geom_bar(stat = 'identity', 
           aes(fill = mpg_grp), 
           width = 0.5) +
  scale_fill_npg() +
  labs(y = 'mpg z-score', fill = 'cyl') +
  theme_classic() +
  theme(axis.title.x = element_blank(),
        axis.text.x = element_text(angle = 45, 
                                   hjust = 0.5,
                                   vjust = 0.5),
        legend.position = ('top'),
        legend.direction = "horizontal")
ggplot(mtcars_tbl, aes(x = car, y = mpg_z)) +
  geom_bar(stat = 'identity', aes(fill = mpg_grp), width = 0.5) +
  scale_fill_npg() +
  labs(x = '', y = 'mpg z-score', fill = 'cyl') +
  theme_minimal() +
  theme(axis.title.x = element_blank(),
        axis.text.x = element_text(angle = 45, 
                                   hjust = 0.5, 
                                   vjust = 0.5)) +
  coord_flip()

欢迎关注Bioinfor生信云

上一篇 下一篇

猜你喜欢

热点阅读