ggplot2 - 多个图

在本章中,我们将重点介绍如何创建多个图,这些图可进一步用于创建三维图。将涵盖的图列表包括 −

  • 密度图
  • 箱线图
  • 点图
  • 小提琴图

我们将使用前几章中使用的"mpg"数据集。该数据集提供了 1999 年至 2008 年 38 种流行车型的燃油经济性数据。该数据集随 ggplot2 包一起提供。遵循下面提到的步骤来创建不同类型的图表非常重要。

> # 加载模块
> library(ggplot2)
>
> # 数据集
> head(mpg)
# A tibble:6 x 11
manufacturer  model   displ   year   cyl   trans       drv   cty   hwy  fl   class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi        a4      1.8     1999   4     auto(l5)    f     18    29   p    compa~
2 audi        a4      1.8     1999   4     manual(m5)  f     21    29   p    compa~
3 audi        a4      2       2008   4     manual(m6)  f     20    31   p    compa~
4 audi        a4      2       2008   4     auto(av)    f     21    30   p    compa~
5 audi        a4      2.8     1999   6     auto(l5)    f     16    26   p    compa~
6 audi        a4      2.8     1999   6     manual(m5)  f     18    26   p    compa~

密度图

密度图是上述数据集中任何数值变量分布的图形表示。它使用核密度估计来显示变量的概率密度函数。

"ggplot2"包包含一个名为 geom_density() 的函数来创建密度图。

我们将执行以下命令来创建密度图 −

> p −- ggplot(mpg, aes(cty)) +
+ geom_density(aes(fill=factor(cyl)), alpha=0.8)
> p

我们可以从下面创建的图中观察到各种密度 −

Density Plot

我们可以通过重命名 x 和 y 轴来创建图,这样可以保持更好的清晰度,并包含具有不同颜色组合的标题和图例。

> p + labs(title="密度图",
+ subtitle="按气缸数分组的城市里程",
+ caption="来源:mpg",
+ x="城市里程",
+ fill="# 气缸")
密度图

箱线图

箱线图也称为箱须图,表示数据的五个数字摘要。五个数字摘要包括最小值、第一四分位数、中位数、第三四分位数和最大值等值。穿过箱线图中间部分的垂直线被视为"中位数"。

我们可以使用以下命令创建箱线图 −

> p <- ggplot(mpg, aes(class, cty)) +
+  geom_boxplot(varwidth=T, fill="blue")
> p + labs(title="A Box plot Example",
+    subtitle="Mileage by Class",
+    caption="MPG Dataset",
+    x="Class",
+    y="Mileage")
>p

在这里,我们根据 class 和 cty 的属性创建箱线图。

箱线图

点图

点图类似于散点图,只是维度不同。在本节中,我们将在现有的箱线图中添加点图,以获得更好的图像和清晰度。

可以使用以下命令创建箱线图 −

> p <- ggplot(mpg, aes(manufacturer, cty)) +
+ geom_boxplot() +
+ theme(axis.text.x = element_text(angle=65, vjust=0.6))
> p
Dot Plot

点图的创建方式如下 −

> p + geom_dotplot(binaxis='y',
+ stackdir='center',
+ dotsize = .5
+ )
点图

小提琴图

小提琴图也是以类似的方式创建的,只是小提琴的结构发生了变化,而不是盒子。输出清楚地在下面提到 −

> p <- ggplot(mpg, aes(class, cty))
>
> p + geom_violin()
小提琴图