使用R语言绘制棒棒糖图火柴杆图教程

 更新时间:2021-11-05 16:16:28   作者:佚名   我要评论(0)

目录 使用原生ggplot方法1)生成数据使用ggpubr包中的ggdotchart()参考 使用原生ggplot方法
最容易也是最简单想到的方法是直接使用ggplot2包

 使用原生ggplot方法

最容易也是最简单想到的方法是直接使用ggplot2包进行更新,这里需要使用ggplot本身的特性,通过图层叠加的方式,进行最终棒棒糖图的展现。(宽度极窄的柱状图配合散点图即可呈现)

1)生成数据

下面我们的展示均以此份数据为例:

library(ggplot2)

# Load data
data("mtcars")
dfm <- mtcars
# Convert the cyl variable to a factor
dfm$cyl <- as.factor(dfm$cyl)
# Add the name colums
dfm$name <- rownames(dfm)

# Calculate the z-score of the mpg data
dfm$mpg_z <- (dfm$mpg -mean(dfm$mpg))/sd(dfm$mpg)
dfm$mpg_grp <- factor(ifelse(dfm$mpg_z < 0, "low", "high"), 
                      levels = c("low", "high"))
# Inspect the data
head(dfm[, c("name", "wt", "mpg", "mpg_z", "mpg_grp", "cyl")])

2)绘制棒棒糖图

ggplot(dfm, aes(x = name, y = mpg)) +
  geom_hline(yintercept = 0, color = "grey", size = 1) + # 添加y=0的辅助线
  geom_point(aes(color = cyl), size = 2) +         # 将点的size设置大一些比较好看
  geom_bar(aes(fill = cyl), stat = "identity", width = 0.2) + # 注意将width宽度设小
  theme_bw(base_family = "Times") +
  theme(panel.grid.minor = element_blank(),
        panel.grid.major.x = element_blank(),      # 消除竖条的背景线
        axis.text.x = element_text(angle = 90),
        legend.position = "None",
        panel.border = element_blank(),
        # text = element_text(family = "STHeiti"), # Mac 电脑上绘图展现中文需要此行命令
        plot.title = element_text(hjust = 0.5)) +  # 标题居中,若无标题可不加
  labs(x = "name", y = "mpg",
       colour = "", linetype = "", fill = "")

结果如下:

下面我们介绍一种更简便且高级的棒棒糖图绘制方法:使用ggpubr包中的ggdotchart()函数。

使用ggpubr包中的ggdotchart()

这里我们直接看官方介绍的几个例子,来理解函数的使用方式,首先载入依赖包:

library(ggpubr)

1)

ggdotchart(dfm, x = "name", y = "mpg",
           color = "cyl",                                # Color by groups
           palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
           sorting = "ascending",                        # Sort value in descending order
           add = "segments",                             # Add segments from y = 0 to dots
           ggtheme = theme_pubr()                        # ggplot2 theme
)

2)

ggdotchart(dfm, x = "name", y = "mpg",
           color = "cyl",                                
           palette = c("#00AFBB", "#E7B800", "#FC4E07"), 
           sorting = "asc", sort.by.groups = TRUE,                      
           add = "segments",                            
           add.params = list(color = "lightgray", size = 2), 
           group = "cyl",                                
           dot.size = 4,                                 
           ggtheme = theme_pubclean()
) + font("x.text", size = 8, vjust = 0.5)

3)

ggdotchart(dfm, x = "name", y = "mpg",
           color = "cyl",                                # Color by groups
           palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
           sorting = "descending",                       # Sort value in descending order
           add = "segments",                             # Add segments from y = 0 to dots
           rotate = TRUE,                                # Rotate vertically
           group = "cyl",                                # Order by groups
           dot.size = 6,                                 # Large dot size
           label = round(dfm$mpg),                        # Add mpg values as dot labels
           font.label = list(color = "white", size = 9,
                             vjust = 0.5),               # Adjust label parameters
           ggtheme = theme_pubr()                        # ggplot2 theme
)

4)

ggdotchart(dfm, x = "name", y = "mpg_z",
           color = "cyl",                                # Color by groups
           palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
           sorting = "descending",                       # Sort value in descending order
           add = "segments",                             # Add segments from y = 0 to dots
           add.params = list(color = "lightgray", size = 2), # Change segment color and size
           group = "cyl",                                # Order by groups
           dot.size = 6,                                 # Large dot size
           label = round(dfm$mpg_z,1),                        # Add mpg values as dot labels
           font.label = list(color = "white", size = 9,
                             vjust = 0.5),               # Adjust label parameters
           ggtheme = theme_pubr()                        # ggplot2 theme
) + geom_hline(yintercept = 0, linetype = 2, color = "lightgray")

参考

Articles - ggpubr: Publication Ready Plots

Articles - R Graphics Essentials

ggpubr: ‘ggplot2' Based Publication Ready Plots

以上就是使用R语言绘制棒棒糖图火柴杆图教程的详细内容,更多关于R语言绘制棒棒糖图火柴杆图的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
  • R语言绘制Vonoroi图的完整代码
  • 利用R语言绘制时间序列图的操作
  • R语言基础画图实例讲解
  • R语言绘制直方图实例讲解
  • 使用R语言绘制散点图结合边际分布图教程

相关文章

  • 使用R语言绘制棒棒糖图火柴杆图教程

    使用R语言绘制棒棒糖图火柴杆图教程

    目录 使用原生ggplot方法1)生成数据使用ggpubr包中的ggdotchart()参考 使用原生ggplot方法 最容易也是最简单想到的方法是直接使用ggplot2包
    2021-11-05
  • Java时间复杂度、空间复杂度的深入详解

    Java时间复杂度、空间复杂度的深入详解

    目录算法效率时间复杂度什么是时间复杂度推导大 O 阶的方法算法情况计算冒泡排序的时间复杂度计算二分查找的时间复杂度计算阶乘递归的时间复
    2021-11-05
  • Java 类与对象重难点详解

    Java 类与对象重难点详解

    目录类和类的实例化字段的初始化类当中实现方法static 静态关键字封装private 实现封装setter 和 getter 方法构造方法this 关键字匿名对象什
    2021-11-05
  • JS数组去重详情

    JS数组去重详情

    目录1 测试用例2 JS 数组去重4大类型2.1 元素比较型2.1.1 双层 for 循环逐一比较(es5常用)2.1.2 排序相邻比较2.2 查找元素位置型2.2.1 ind
    2021-11-05
  • Java 数据结构之时间复杂度与空间复杂度详解

    Java 数据结构之时间复杂度与空间复杂度详解

    目录算法效率时间复杂度什么是时间复杂度推导大 O 阶的方法算法情况计算冒泡排序的时间复杂度计算二分查找的时间复杂度计算阶乘递归的时间复
    2021-11-05
  • @ComponentScan在spring中无效的原因分析及解决方案

    @ComponentScan在spring中无效的原因分析及解决方案

    目录@ComponentScan在spring中无效查了大量资料之后,找到了原因@Component和@ComponentScan常规理解@Component和@ComponentScan的联系@Spri
    2021-11-05
  • R语言数据可视化ggplot绘制置信区间与分组绘图技巧

    R语言数据可视化ggplot绘制置信区间与分组绘图技巧

    目录1. 单组情况1)构造数据集2)绘制置信区间2. 多组情况方法11)构造数据集2)绘制置信区间方法21)构造数据集2)绘制置信区间3)美化1. 单
    2021-11-05
  • Java中的abstract和interface

    Java中的abstract和interface

    目录1、简介2、准则2.1 接口优先于抽象类2.2 接口中不应该实现方法2.3 接口不应该用于导出常量 1、简介 abstract和interface关键字在Java中随
    2021-11-03
  • 浅谈Docker-compose中的depends_on顺序的问题解决

    浅谈Docker-compose中的depends_on顺序的问题解决

    使用depends_on进行容器排序时并不能完美的解决容器之间的依赖问题,原因是因为 depends_on只能保证容器进入到 运行状态而不是完全状态(不知
    2021-11-03
  • Android实现边录边播应用

    Android实现边录边播应用

    本文实例为大家分享了Android实现边录边播的具体代码,供大家参考,具体内容如下 1.Android.mk LOCAL_PATH:= $(call my-dir) include $(CL
    2021-11-03

最新评论