R语言 如何用ggplot2对条形图进行分面排序

R语言 如何用ggplot2对条形图进行分面排序

在这篇文章中,我们将讨论如何使用R编程语言中的ggplot2包对条形图进行分面排序。我们可以通过使用geom_col()函数和ggplot2包的facet_wrap()函数来绘制一个分面条形图。

语法: ggplot( dataframe, aes( x, y )+ geom_col() + facet_wrap(~z)

参数

  • dataframe: 确定用于绘图的数据框架。
  • x: 确定X轴的矢量列。
  • y :确定Y轴的向量列。
  • z: 决定了必须围绕其绘制的变量。

创建一个基本的柱状图

下面是一个使用facet_wrap()函数进行分面的基本柱状图。

使用的数据集: 样本2

# Load library tidyverse
library(tidyverse)
  
# create sample data frame
sample_data <- readr::read_csv('sample2.csv')
  
# draw a bar plot using geom_col() function
# divide the plot into facts using facet_wrap() function
ggplot(sample_data, aes(y=state, x=Survey))+
  geom_col()+
  facet_wrap(~Year)

输出

如何用R语言中的ggplot2对条形图进行分面排序?

重新排序的柱状图

为了对柱状图进行重新排序,以便更好地实现数据的可视化,我们使用R语言的tidytext包的reorder_within()函数。reorder_within()函数在用faceting绘制之前对列进行了重新排序,这样一来,每个facet内的值都是有序的。但这产生了一个问题,即在分面后,所有被分到其他面的列也作为一个空列并存于所有其他面中。为了解决这个问题,我们在facet_wrap()函数中添加了一个尺度参数,根据需要释放的轴数据,其值为free_y或free_x。

语法: ggplot( dataframe, aes( reorder_within(x,y,z) , y )+ geom_col() + facet_wrap(~z, scales= “free_y/free_x”)

参数

  • dataframe: 决定用于绘图的数据框架。
  • x: 确定x轴的矢量列。
  • y :确定y轴的向量列。
  • z: 决定了必须围绕其绘制的变量。

例子

这里是一个使用facet_wrap()函数进行分面的基本条形图。我们还使用tidytext包的reorder_within()函数对条形图进行了重新排序。

# load library tidyverse and tidytext
library(tidyverse)
library(tidytext)
  
# create sample data frame
sample_data <- readr::read_csv('sample2.csv')
  
# create bar plot with reodering of y-axis variable
# use scales parameter to remove empty variable from y-axis
ggplot(sample_data, aes(y=reorder_within(state,Survey, Year), x=Survey))+
  geom_col()+
  facet_wrap(~Year,scales="free_y")

输出

如何用R语言中的ggplot2对条形图进行分面排序?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程