📜  如何在 R 中使用 fct_reorder 对 boxplot 中的框进行排序?

📅  最后修改于: 2022-05-13 01:55:20.144000             🧑  作者: Mango

如何在 R 中使用 fct_reorder 对 boxplot 中的框进行排序?

在本文中,我们将讨论如何使用 R 编程语言中的 fct_reorder()函数对箱线图中的框进行重新排序。

默认情况下,ggplot2 箱线图按分类变量的字母顺序对框进行排序。但是为了更好地可视化数据,有时我们需要按排序顺序对它们进行重新排序。要按升序或降序对数据进行排序,我们使用了 forcats 包的 fct_reorder()函数。 R 语言的 forcats 包包含用于重新排序和修改因子级别的帮助程序。 fct_reorder()函数通过与另一个变量一起排序来帮助我们重新排序因子水平。

方法一:按升序重新排列箱线图

fct_reorder()函数默认按照 value_variable 的升序对数据进行排序。因此,我们使用 fact_reorder()函数先对数据进行升序排序。然后我们使用 ggplot2 包的 geom_boxplot()函数来绘制箱线图。

安装和导入 tidyverse 包的语法:

install.package('tidyverse')    # To install
library(tidyverse)              # To import  

例子:

这是一个基本的箱线图,箱线按升序排列。示例中使用的 CSV 可在此处下载。

R
# load library tidyverse
library(tidyverse)
  
# load sample data
sample_data <- read.csv("sample_box.CSV")
  
# Reorder data with fct_reorder function 
# and plot boxplot
sample_data <- sample_data%>%mutate(Brand=fct_reorder(Brand, Result))
  
# plot boxplot
ggplot(sample_data, aes(x=Result, y=Brand))+
          geom_boxplot()


R
# load library tidyverse
library(tidyverse)
  
# load sample data
sample_data <- read.csv("sample_box.CSV")
  
# Reorder data with fct_reorder function 
# and plot boxplot
sample_data <- sample_data%>%mutate(Brand=fct_reorder(
  Brand, Result, .desc=TRUE))
  
# plot boxplot
ggplot(sample_data, aes(x=Result, y=Brand))+
          geom_boxplot()


输出:

方法2:按降序重新排列箱线图

要按降序重新排序数据,我们使用 fct_reorder()函数的 .desc 参数。 .desc 参数为真时,按降序对数据进行排序,默认为假,因此按升序对数据进行排序。

例子:

这是一个基本的箱线图,箱线按降序排列。

R

# load library tidyverse
library(tidyverse)
  
# load sample data
sample_data <- read.csv("sample_box.CSV")
  
# Reorder data with fct_reorder function 
# and plot boxplot
sample_data <- sample_data%>%mutate(Brand=fct_reorder(
  Brand, Result, .desc=TRUE))
  
# plot boxplot
ggplot(sample_data, aes(x=Result, y=Brand))+
          geom_boxplot()

输出: