鳍更长的企鹅比鳍更短的企鹅更重还是更轻?你可能已经有了答案,但试着让你的回答更精确一些。鳍长与体重之间的关系是什么样的?是正相关还是负相关?是线性的还是非线性的?这种关系是否会因企鹅的物种不同而变化?又是否会因企鹅所生活的岛屿不同而变化?让我们创建一些可视化图表来回答这些问题。
你可以使用palmerpenguins中的penguins数据框(也称为palmerpenguins::penguins)来检验你对这些问题的回答。数据框是一种矩形结构的数据集合,由变量(列)和观测(行)组成。penguins数据集包含了由Kristen Gorman博士和南极帕尔默站LTER项目收集并发布的344条观测数据。
为了让讨论更清晰,我们先定义一些术语:
变量是你可以测量的数量、特征或属性。
数值是变量在被测量时所呈现的状态。变量的数值可能会随着每次测量而变化。
观测是在相似条件下进行的一组测量(通常是在同一时间、针对同一对象完成所有测量)。一次观测会包含多个数值,每个数值对应一个不同的变量。我们有时也将观测称为数据点。
表格数据是一组数值的集合,每个数值都与一个变量和一个观测相关联。当每个数值都位于独立的“单元格”中、每个变量位于各自的列中、每个观测位于各自的行中时,这种表格数据就是整洁的(tidy)。
在此语境中,变量指的是所有企鹅的某一属性,而观测指的是单只企鹅的所有属性。
在控制台中输入数据框的名称,R会打印其内容的预览。请注意,在该预览的顶部显示为tibble。在tidyverse中,我们使用一种称为tibble的特殊数据框,你很快就会进一步了解它。
> penguins# A tibble: 344 × 8 species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year <fct> <fct> <dbl> <dbl> <int> <int> <fct> <int> 1 Adelie Torgersen 39.1 18.7 181 3750 male 2007 2 Adelie Torgersen 39.5 17.4 186 3800 female 2007 3 Adelie Torgersen 40.3 18 195 3250 female 2007 4 Adelie Torgersen NA NA NA NA NA 2007 5 Adelie Torgersen 36.7 19.3 193 3450 female 2007 6 Adelie Torgersen 39.3 20.6 190 3650 male 2007 7 Adelie Torgersen 38.9 17.8 181 3625 female 2007 8 Adelie Torgersen 39.2 19.6 195 4675 male 2007 9 Adelie Torgersen 34.1 18.1 193 3475 NA 200710 Adelie Torgersen 42 20.2 190 4250 NA 2007# ℹ 334 more rows# ℹ Use `print(n = ...)` to see more rows该数据框包含8列。若想以另一种方式查看数据,从而看到所有变量以及每个变量的前几条观测,可以使用glimpse()。或者,如果你使用的是RStudio,可以运行View(penguins)来打开一个交互式数据查看器。
该数据框包含8列。若想以另一种方式查看数据,从而看到所有变量以及每个变量的前几条观测,可以运行View(penguins)来打开一个交互式数据查看器。
penguins中的变量包括:
species:企鹅的物种(Adelie、Chinstrap或Gentoo)。
flipper_length_mm:企鹅鳍的长度(单位:毫米)。
body_mass_g:企鹅的体重(单位:克)。
要了解更多关于penguins的数据,可以运行 ?penguins 打开其帮助页面。

最终目标是重现如下可视化图表,用于展示这些企鹅的鳍长与体重之间的关系,并将企鹅的物种纳入考虑。

创建一个ggplot
让我们一步一步地重现这个图。
使用ggplot2时,你从函数ggplot()开始绘图,先定义一个绘图对象,然后在其上添加各个图层。ggplot()的第一个参数是用于绘图的数据集,因此ggplot(data = penguins)会创建一个空的图形,该图已准备好展示penguins数据,但由于我们尚未指定如何进行可视化,目前它仍然是空的。这个图并不十分有趣,但你可以把它看作是一块空白画布,接下来你将在其上绘制图形的各个图层。
# install.packages("ggplot2")library(ggplot2)ggplot(data = penguins)接下来,我们需要告诉ggplot()如何将数据中的信息以可视化形式呈现。ggplot()函数的mapping参数用于定义数据集中变量如何映射到图形的视觉属性(美学属性)。mapping参数始终在aes()函数中进行定义,而aes()中的x和y参数用于指定映射到x轴和y轴的变量。现在,我们只将鳍长映射到x美学属性,将体重映射到y美学属性。ggplot2会在data参数中查找这些被映射的变量,在这里即为penguins数据。
下面的图展示了添加这些映射后的结果。
ggplot( data = penguins, mapping = aes(x = flipper_length_mm, y = body_mass_g))我们的空白画布现在有了更多结构——可以清楚地看到鳍长将显示在何处(x轴),体重将显示在何处(y轴)。但企鹅本身尚未出现在图中。这是因为我们还没有在代码中说明如何将数据框中的观测值呈现在图上。
发表评论