杭州电子商务研究院

探索 R 库:ggplot2

2020-10-23 08:00飞浪

介绍

ggplot2是tidyverse集合中的一个包,其唯一目的是创建图形。它是 R 中一个著名的库,基于分层图形语法的概念。图形语法使您能够简明扼要地描述图表的组成部分,分层方法逐层应用这些组成部分,使代码易于阅读和理解。除了构建图形外,它还广泛用于探索性数据分析,因为理解数据集的最佳方法是将其可视化,这使得提取关系变得更加容易。

先决条件

要安装ggplot2包,请运行以下代码片段之一。

      #To install the entire tidyverse collection which includes ggplot2
install.packages("tidyverse")
    
      #To install ggplot2 alone
install.packages("ggplot2")
    

基本组件

ggplot2有几个基本组件:

  • ggplot():这将创建一个新的ggplot2对象。
  • aes():这创建了美学映射方法,描述数据中的变量如何映射到视觉属性。
  • +:这允许您在创建任何图时添加图层。

理解 ggplot2 中的图层

如果我们讨论ggplot2中的层概念,则有四个主要层:

  1. 数据:用于创建图表的数据或数据集的子集。
  2. 美学:情节中变量的映射。
  3. 几何:用于表示数据点的几何函数。
  4. 主题:情节的不同视觉风格。

让我们看一下基本的图形模板并使用它来创建一些图形。

      ggplot(data = <DATA>) + 
  <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))
    

ggplot(data = <DATA>)是第一层。使用 mpg 数据集,它包含在ggplot2库中,加载后即可使用。以下是 mpg 数据集的列。

      data(mpg)
colnames(mpg)

"manufacturer" "model"        "displ"        "year"         "cyl"          "trans"        "drv"         
"cty"          "hwy"          "fl"           "class"
    

让我们在hwy列上创建一个直方图。

      #You can ignore theme_classic() function if you want, the resulting plot would be in the default theme.
ggplot(mpg, aes(hwy))+
geom_histogram(binwidth = 5)+
theme_classic()
    

上面的代码使用了全部四个层。数据和美学包含在ggplot(mpg, aes(hwy))中,然后geom_histogram()函数添加了直方图的几何形状,最后,theme_classic()是可选的。

ggplot2中有不同类型的 geom 函数,可用于不同情况以创建不同的图。geom 是一种使用图来表示数据的几何对象,例如,条形图将使用条形 geom,折线图将使用折线 geom,等等。这反映在 geom 函数的名称中,因为它们的命名方式也与之相符,例如geom_line()、geom_bar()等。

除了主要层之外,ggplot2中还有一些其他有用的功能,例如坐标系、刻面和统计转换,我们将在本指南的其余部分中进行探讨。

刻面

在分面分析中,您可以使用数据集的任何分类列或变量将图拆分为多个子图。如果您想使用一个变量来划分图,请使用 facet_wrap ()函数;如果您想使用两个变量来划分图,请使用facet_grid()函数。

让我们将这两个函数应用到您之前创建的直方图上。

      # Saving histogram plot in a variable
a <- ggplot(mpg, aes(hwy))+
geom_histogram(binwidth = 5)+
theme_classic()

# Creating subplots using "cyl" column
a + facet_wrap(~cyl)
    

如您所见,现在我们有四个子图,每个子图对应cyl列的每个唯一值。

现在来看看facet_grid() 函数。在此函数中,您将使用数据集中的两个分类列。

      # You will use 'a' variable storing the histogram again thus reducing code redundancy

a + facet_grid(drv ~ cyl)
    

坐标系

ggplot2中的默认坐标系是笛卡尔坐标系,其中 x 和 y 位置独立,用于定位数据点。ggplot2 中有不同的坐标系函数可用于不同场合。最著名的是coord_flip()和coor_polar()。

让我们看几个例子来了解coord_flip()和coord_polar()的用法。

      # First create a bar chart, try to find yourself the reason for using  fill, show.legend, and width arguments 

bar <- ggplot(data = mpg) + 
     geom_bar(
         aes(x = manufacturer, fill = manufacturer), 
         show.legend = FALSE,
         width = 1  ) 

bar
    
      #lets use coord_flip()

bar + coord_flip()
    

至于coord_polar(),让我们将其应用于相同的条形图以使用极坐标。

      bar + coord_polar()
    

统计变换

如果您查看我们之前创建的条形图,您会发现它显示了其他信息,包括每个制造商的记录数量,但数据集中没有该数量。有些图表显示原始值,而另一些图表则计算新值并将其添加到图中。用于计算图表新值的算法称为统计变换或统计。

可以使用stat_count()函数(而不是geom_bar())来创建条形图。每个 geom 函数都有一个可以覆盖的默认统计数据。请参阅下面的示例。

      # Creating a dataset
library(dplyr)
a <- mpg%>% 
   group_by(manufacturer)%>%
   summarise(Count = n())

# Resetting the stat of geom_bar() from count to identity

ggplot(data = a)+
     geom_bar(mapping = aes(x = manufacturer, y = Count), stat = "identity")
    

应用所有图层

在前面的部分中,您学习了使用ggplot2创建图形的基础知识以及方面、坐标系和统计变换。现在让我们使用下面的模板应用所有这些。

      ggplot(data = <DATA>) + 
  <GEOM_FUNCTION>(
     mapping = aes(<MAPPINGS>),
     stat = <STAT>
  ) +
  <COORDINATE_FUNCTION> +
  <FACET_FUNCTION>
    

保留默认值stat = "count"并仅使用 mpg 数据集。

      ggplot(data = mpg)+
 geom_bar(mapping = aes(x = manufacturer, fill = manufacturer),
   stats = "count", show.legend = FALSE,
         width = 1  )+
   coord_flip()+
   facet_wrap(~year)
    

结论

本指南介绍了在 R 中使用ggplot2创建图形的基础知识。您还可以将ggplot2用于您自己的数据可视化需求或任何数据分析项目。使用ggplot2创建图形时具有很大的灵活性。每个函数都包含一组参数,可用于相应地调整图形。作为开源开发的一部分,新功能不断添加。本指南将推动您探索ggplot2中的更多内容。

欲了解更多信息,请访问此 repo。

曝光32869浏览1772