服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - R语言 - 使用R语言绘制棒棒糖图火柴杆图教程

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

2022-01-19 13:33Kanny广小隶 R语言

本篇文章为大家介绍几种利用R语言绘制棒棒糖图(火柴杆图)的方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

使用原生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 = "")

结果如下:

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

下面我们介绍一种更简便且高级的棒棒糖图绘制方法:使用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
)

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

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)

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

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
)

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

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")

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

 

参考

Articles - ggpubr: Publication Ready Plots

Articles - R Graphics Essentials

ggpubr: ‘ggplot2' Based Publication Ready Plots

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

原文链接:https://kanny.blog.csdn.net/article/details/107087803

延伸 · 阅读

精彩推荐
  • R语言R语言实现支持向量机SVM应用案例

    R语言实现支持向量机SVM应用案例

    本文主要介绍了R语言实现支持向量机SVM应用案例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    一天_pika5222022-01-18
  • R语言R语言中的vector(向量),array(数组)使用总结

    R语言中的vector(向量),array(数组)使用总结

    这篇文章主要介绍了R语言中的vector(向量),array(数组)使用总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    A叶子叶来5772021-11-14
  • R语言R语言中qplot()函数的用法说明

    R语言中qplot()函数的用法说明

    这篇文章主要介绍了R语言中qplot()函数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Jack_丁明12752022-01-05
  • R语言R语言读取xls与xlsx格式文件过程

    R语言读取xls与xlsx格式文件过程

    这篇文章主要为大家介绍了使用R语言读取xls与xlsx格式文件的过程步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪...

    Kanny广小隶11982022-01-20
  • R语言R语言gsub替换字符工具的具体使用

    R语言gsub替换字符工具的具体使用

    这篇文章主要介绍了R语言gsub替换字符工具的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    lztttao10372021-12-24
  • R语言如何用R语言绘制散点图

    如何用R语言绘制散点图

    这篇文章主要介绍了如何用R语言绘制散点图,帮助大家更好的理解和学习使用R语言,感兴趣的朋友可以了解下...

    菜鸟教程13002021-12-23
  • R语言R语言常量知识点总结

    R语言常量知识点总结

    在本篇文章里小编给大家整理了一篇关于R语言常量知识点总结内容,有兴趣的朋友们可以学习分享下。...

    R语言教程网12102021-12-29
  • R语言基于R/RStudio中安装包“无法与服务器建立连接”的解决方案

    基于R/RStudio中安装包“无法与服务器建立连接”的解决方案

    这篇文章主要介绍了基于R/RStudio中安装包“无法与服务器建立连接”的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    truffle52815052022-01-05