如何在 R 中使用 fct_reorder 对 boxplot 中的框进行排序?
在本文中,我们将讨论如何使用 R 编程语言中的 fct_reorder()函数对箱线图中的框进行重新排序。
默认情况下,ggplot2 箱线图按分类变量的字母顺序对框进行排序。但是为了更好地可视化数据,有时我们需要按排序顺序对它们进行重新排序。要按升序或降序对数据进行排序,我们使用了 forcats 包的 fct_reorder()函数。 R 语言的 forcats 包包含用于重新排序和修改因子级别的帮助程序。 fct_reorder()函数通过与另一个变量一起排序来帮助我们重新排序因子水平。
方法一:按升序重新排列箱线图
fct_reorder()函数默认按照 value_variable 的升序对数据进行排序。因此,我们使用 fact_reorder()函数先对数据进行升序排序。然后我们使用 ggplot2 包的 geom_boxplot()函数来绘制箱线图。
Syntax: df %>% mutate( categorical_variable= fct_reorder( categorical_variable, value_variable))
Parameters:
- df: determines the data frame to be used for reordering of data.
- categorical_variable: determines the variable which is to be reordered.
- value_variable: determines the variable according to which data is to be reordered.
安装和导入 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 参数为真时,按降序对数据进行排序,默认为假,因此按升序对数据进行排序。
Syntax: df %>% mutate( categorical_variable= fct_reorder( categorical_variable, value_variable, .desc))
Parameters:
- .desc: determines a boolean value, which if true sorts the data in descending order. By default, it is false.
例子:
这是一个基本的箱线图,箱线按降序排列。
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()
输出: