body brain
Arctic fox 3.38544.50
Owl monkey 0.48015.50
Mountain beaver 1.3508.10
Cow 465.000423.00
Grey wolf 36.330119.50
Goat 27.660115.00
Roe deer 14.83098.20...
Pig 192.000180.00
Echidna 3.00025.00
Brazilian tapir 160.000169.00
Tenrec 0.9002.60
Phalanger 1.62011.40
Tree shrew 0.1042.50
Red fox 4.23550.40技术支持
要理解两者之间的关系,最显而易见的第一步是绘制散点图,如下所示:
ggplot(mammals, aes(x = body, y = brain))+
geom_point()技术支持
有两种哺乳动物——非洲象和亚洲象——它们的脑重与体重都非常大,导致两个坐标轴都呈现正偏态。
线性模型
如果此时直接拟合线性模型,会是个糟糕的选择,因为少数极端值会产生很大的影响。
ggplot(mammals, aes(x = body, y = brain))+
geom_point(alpha =0.6)+
stat_smooth(
method ="lm",
color ="red",
se =FALSE)技术支持
对两个变量同时进行对数变换,可以得到更好的拟合效果。
ggplot(mammals,aes(x = body, y = brain))+geom_point(alpha =0.6)+coord_fixed()+scale_x_log10()+scale_y_log10()+stat_smooth(
method ="lm",
color ="#C42126",
se =FALSE,
size =1)技术支持
# Load the ggplot2 package
library(ggplot2)# Explore the mtcars data frame with str()str(mtcars)# Execute the following command
p <- ggplot(mtcars, aes(cyl, mpg))+
geom_point()技术支持
运行以上代码后,会得到如下结果:
data.frame':32 obs.of11variables:
$ mpg : num 212122.821.418.718.114.324.422.819.2...
$ cyl : num 6646868446...
$ disp: num 160160108258360...
$ hp : num 110110931101751052456295123...
$ drat: num 3.93.93.853.083.152.763.213.693.923.92...
$ wt : num 2.622.882.323.213.44...
$ qsec: num 16.51718.619.417...
$ vs : num 0011010111...
$ am : num 1110000000...
$ gear: num 4443333444...
$ carb: num 4411214224...技术支持
数据可视化是数据科学家的必备技能。它以有意义且恰当的方式将统计与设计相结合。一方面,数据可视化是图形化数据分析的一种形式,强调准确呈现与解读数据。另一方面,数据可视化依赖良好的设计选择,让图形更具吸引力,并有助于理解和传达结果。除此之外,数据可视化的本质是一种视觉传播形式,也包含一定的创造性。
理解探索型与说明型可视化之间的区别非常重要。探索型可视化易于生成、数据量大,面向小范围的专业受众,例如您和您的同事——其主要目的在于图形化数据分析。说明型可视化则耗时费力、针对特定数据,面向更广泛的受众,例如发表物或演示文稿——它们是沟通过程的一部分。作为数据科学家,快速探索数据很重要,但您也需要向相关方解释您的结果。好的设计始于对受众的思考——有时,这个受众就是我们自己。
散点图
下面这个数据集包含了 62 种哺乳动物的平均脑重与体重。
要理解两者之间的关系,最显而易见的第一步是绘制散点图,如下所示:
有两种哺乳动物——非洲象和亚洲象——它们的脑重与体重都非常大,导致两个坐标轴都呈现正偏态。
线性模型
如果此时直接拟合线性模型,会是个糟糕的选择,因为少数极端值会产生很大的影响。
对两个变量同时进行对数变换,可以得到更好的拟合效果。
因此,尽管我们从一个粗略的探索性图形开始,但它让我们更了解数据并得到有意义的结果。
安斯库姆图
当我们想象一个线性模型时,如这个匿名图所示,我们会以为自己在描述看起来大致像这样的数据。
但同样的模型也可能在描述完全不同的数据,比如抛物线关系,这就需要不同的模型。
或者是一个极端值产生巨大影响的数据集;当去除该离群点后,这一点就会变得清晰。
有时,模型可能在描述某种关系,而实际上并不存在,因为某些极端值可能是不正确的。
如果我们只依赖数值输出而不绘制数据,就会错过那些独特且有趣的潜在趋势。
我们可以看到,数据可视化植根于统计学与图形化数据分析,但它同时也是一个包含试错过程的创造性实践。
交互示例
在以下示例中,您将首先使用 library() 加载
ggplot2包。然后,使用 str() 来探索mtcars数据集的结构。最后,您将可视化该 ggplot,并尝试理解 ggplot 如何处理数据。
您将使用的
mtcars数据集来自 1973 年《Motor Trend》杂志,包含 32 款汽车的信息。该数据集规模小、直观,且包含多种连续和分类型变量。运行以上代码后,会得到如下结果:
要进一步学习使用 ggplot 进行数据可视化,请观看我们的课程 Introduction to Data Visualization with ggplot2 中的视频。同时,随身备一份我们的 ggplot2 速查表 以便快速参考。
本文内容选自 DataCamp 的课程 Introduction to Data Visualization with ggplot2,作者 Rick Scavetta。