R中ggpot散点图的详细指南

4月24日,二千零一十九
By

(本文首次发表于 Learn R Programming & Build a Data Science Career | Michael Toth,并对 188bet appR博主

在数据可视化方面,flashy graphs can be fun.但如果你想传达信息,尤其是对广大观众来说,flashy isn't always the way to go.

Last week I showed how to work with线图在R.

在本文中,I'm going to talk 金宝搏网址about creating a scatter plot in R.明确地,我们将创建一个格格图scatter plot using格格图吉姆点功能。

散点图是一种二维数据可视化,它使用点来绘制两个不同变量的值——一个沿X轴,另一个沿Y轴。当您想要评估被绘制的两个变量之间的关系(或缺乏关系)时,通常使用散点图。

Scatter Plot of Adam Sandler Movies from FiveThirtyEight


亚当·桑德勒电影的五分之八散点图

例如,在这个图中,Fivethirtyeight用烂番茄收视率和票房总收入制作了一系列亚当·桑德勒的电影来制作这个散点图。They've additionally grouped the movies into 3 categories,用不同的颜色高亮显示。

The Famous Gapminder Scatter Plot of Life Expectancy vs.按国家划分的收入


Gapminder寿命与按国家划分的收入

这个散点图,最初由汉斯·罗斯林创作,is famous among data visualization practitioners.它绘制了预期寿命与世界各国的收入。它还使用点的大小来绘制国家人口地图,并使用点的颜色来绘制大陆地图,在传统散点图中添加2个附加变量。

HansRosling使用了一种著名的挑衅和动画演示风格,使这些数据变得活跃起来。他通过GAPMEDER基金会的演讲来倡导可持续的全球发展。

Hans Rosling's example shows how simple graphic styles can be powerful tools for communication and change when used properly!信服?让我们深入阅读本指南,了解如何在R中创建ggplot散点图!

与工作簿一起使用

我创造了一个免费工作簿帮助你在阅读时应用你所学的知识。

该工作簿是一个R文件,包含本文中显示的所有代码,以及其他问题和练习,以帮助您更深入地理解主题。

如果你真的想学习如何在R中创建一个散点图,这样你就能记住几周甚至几个月后的事情,你需要练习。

SoDownload the workbook now在阅读本文的同时进行练习!

ggplot简介

Before we get into the ggplot code to create a scatter plot in R,我想简单地谈一下格格图为什么我认为这是在R中绘制图形的最佳选择。

格格图是在R中创建图形的包,but it's also a method of thinking 金宝搏网址about and decomposing complex graphs into logical subunits.

格格图获取图形的每个组成部分-轴,规模,colors,物体,etc–and allows you to build graphs up sequentially one component at a time.You can then modify each of those components in a way that's both flexible and user-friendly.未指定组件时,格格图使用合理的默认值。这使得格格图在R中创建各种图形的强大而灵活的工具。这是我最近制作的几乎每一张图表的创建工具,我认为你也应该使用它!

调查我们的数据集

Throughout this post,我们将使用MTCASdataset that's built into R.此数据集包含32辆汽车的设计和性能细节。让我们看看它是什么样子的:


mtcars数据集的一个片段

mtcars数据集包含11列:

  • MPG:英里/(US)加仑
  • 共青团:气缸数
  • 迪斯普: Displacement (cu.in.)
  • 惠普: Gross horsepower
  • 德拉特:后桥速比
  • 重量: Weight (1000 lbs)
  • qsec:1/4英里时间
  • vs: Engine (0 = V-shaped,1 =直)
  • :变速箱(0=自动,1 =手动)
  • 齿轮:前进档数
  • carb:化油器数量

如何使用geom_point()在r中创建简单散点图

格格图使用地理信息,或几何物体,to form the basis of different types of graphs.以前我说过金宝搏网址地磁线,用于生成线图。今天我要集中精力吉姆点,用于在R中创建散点图。

图书馆tidyverse)格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPG))

中心

Here we are starting with the simplest possible格格图scatter plot we can create using吉姆点.让我们更详细地回顾一下:

第一,我打电话格格图,它创造了一个新的格格图图表。It's essentially a blank canvas on which we'll add our data and graphics.在这种情况下,我把地铁交给格格图以表明我们将使用MTCars数据格格图散点图。

下一步,我加了我的吉姆点呼叫基地格格图graph in order to create this scatter plot.在格格图,你使用+symbol to add new layers to an existing graph.在第二层,I told格格图使用重量作为x轴变量MPG作为Y轴变量。

就是这样,we have our scatter plot!It shows that,平均而言,as the weight of cars increase,每加仑英里数往往会下降。

在ggplot散点图中更改点颜色

在这个例子上展开,我们现在可以在散点图中使用颜色。

格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPG颜色= “蓝色”)

中心

You'll note that this吉姆点呼叫与之前的呼叫相同,除了我们已经添加了修饰符color = 'blue'到行尾。用不同的颜色尝试一下,看看这在你的机器上是如何工作的。你可以使用你能想到的大多数颜色名称,或者您可以使用特定的十六进制颜色代码来获得更多的粒度。

现在,let's try something a little different.比较格格图下面的代码就是我们刚才在上面执行的代码。There are 3 differences.看看你能不能找到他们,猜猜会发生什么,然后向下滚动查看结果。如果你读过我以前的格格图指南,这一点看起来应该很熟悉!

MTCAS$< 因素MTCAS$)格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPG颜色=))

中心

此图显示了与以前相同的数据,但是现在有两种不同的颜色!红色点对应自动变速器车辆,while the blue dots represent manual transmission vehicles.你注意到我们用来改变图表的3个变化了吗?They were:

  1. 第一,我们转换了variable to a factor.What do you think happens if we don't do this?试一试!
  2. 而不是指定color = 'blue',我们指定颜色=AM
  3. 我们将颜色参数移到AES()圆括号

Let's review each of these changes:

转换variable to a factor

In the dataset,最初是一个数字变量。你可以通过跑步来检查这个等级(mtcars$am).When you pass a numeric variable to a color scale in格格图,it creates a continuous color scale.

在这种情况下,然而,只有2个值用于字段,corresponding to automatic and manual transmission.因此,使用离散色标可以使我们的图形更清晰,两个值的两个颜色选项.我们可以通过转换从数值到因子的字段,正如我们上面所做的。

独自一人,尝试同时使用和不使用此因子转换来绘制图形。如果你已经转换成因子,可以通过运行重新加载数据集数据(MTCAS)尝试将图形绘制为数字!

这一点有点棘手。退房我这篇文章的工作手册for a guided exploration of this issue in more detail!

指定颜色=AM把它移到AES()圆括号

我将这些结合在一起是因为这两个变化是共同作用的。

Before,we told格格图to change the color of the points to blue by addingcolor = 'blue'to ourGeoMangPooPoT()call.

我们在这里所做的有点复杂。不是为我们的点指定一种颜色,我们在说格格图地图中的数据列到颜色审美。

这意味着我们要告诉格格图为每个值使用不同的颜色在我们的数据中!This mapping also lets格格图知道它还需要创建一个图例来识别传输类型,它会自动放在那里!

在ggplot散点图中更改点形状

让我们来看一个相关的例子。这次,不是改变散点图中点的颜色,我们将改变点的形状:

MTCAS$< 因素MTCAS$)格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPGshape=))

中心

这个代码格格图散点图与我们刚才查看的代码相同,但我们已经取代了shape对于颜色.产生的图形非常相似,but it uses different shapes (triangles and circles) instead of different colors in the graph.在黑白打印时,您可能会考虑使用类似的方法,例如。

AES()ggplot中的(美学)映射

我们刚刚看到了如何在格格图那张地图散点图中颜色或形状的变量。格格图将这些映射引用为审美映射,它们包括你看到的一切AES()in ggplot.

审美映射是一种映射方式variables in your data特别地视觉属性(aesthetics) of a graph.

我知道这听起来有点理论化,so let's review the specific aesthetic mappings you've already seen as well as the other mappings available within geom_point.

回顾风水点美学映射列表

ggplot散点图的主要美学映射包括:

  • X:将变量映射到X轴上的位置
  • y:将变量映射到Y轴上的位置
  • 颜色:将变量映射到点颜色
  • shape:将变量映射到点形状
  • 大小:将变量映射到点大小
  • 阿尔法:将变量映射到点透明度

From the list above,我们已经看到了Xy颜色,和shape美学映射。

Xyare what we used in our first格格图我们映射变量的散点图示例重量MPGX轴和Y轴值。Then,我们尝试使用颜色shape绘制地图不同颜色点或形状的变量。

除此之外,还有两种常用的美学映射吉姆点.我们可以使用阿尔法改变图形中点的透明度的美学。最后,the大小aesthetic can be used to change the size of the points in our scatter plot.

注:对于ggplot散点图,有两个附加的美学映射,stroke,和填满,但我不打算在这里报道。它们只用于特殊用途形状,并且有非常具体的超出本指南范围的用例。

Changing the大小GG散点图中的美学映射
格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPG大小=共青团))

中心

在上面的代码中,我们绘制气缸的数量(共青团)以格洛普的规模美学。在这张图中,气缸数越多的汽车显示为较大的点。

注:点的大小因数据中的变量而变化的散点图有时称为气泡图。上面的散点图可以看作是气泡图!

一般来说,we see that cars with more cylinders tend to be clustered in the bottom right of the graph,重量更大,每加仑英里数更低,while those with fewer cylinders are on the top left.这就是说,it's a bit hard to make out all the points in the bottom right corner.我们如何解决这个问题?让我们进一步了解阿尔法美学!金宝搏网址

改变ggplot散点图的透明度阿尔法审美
格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPG阿尔法=共青团))

中心

在这段代码中,我们将alpha美学映射到变量共青团.气缸数少的汽车看起来更透明,而那些有更多圆柱的更不透明。But in this case,I don't think this helps us to understand relationships in the data any better.相反,it just seems to highlight the points on the bottom right.我认为这是一个糟糕的图表!

How else can we use the alpha aesthetic to improve the readability of our graph?让我们回到上面的代码,在这里我们将柱面映射到大小变量,创建我所说的气泡图。还记得右下角的所有车是如何难以辨认的吗?如果我们把图中的所有点都做成半透明的,这样我们就能看穿重叠的气泡了,那会怎么样?让我们试试!

格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPG大小=共青团阿尔法= 0.3)

中心

这使得在右下角更容易看到大型车的聚集,而不会降低左上角这些点的重要性!这是我在ggplot中最喜欢使用的alpha美学:增加透明度以获得对点的密集区域的更多洞察。

美学映射与ggplot中的参数

上面,we saw that we are able to use颜色以两种不同的方式使用geom_点。第一,我们可以通过指定color = 'blue' 外部我们的AES()映射。Then,我们能够地图变量通过指定颜色=AM 里面我们的AES()映射。

同样地,我们看到了两种不同的使用阿尔法美学也是如此。第一,我们mapped变量共青团通过指定阿尔法=CYL 里面我们的AES()映射。Then,we set the alpha of all points to 0.3 by specifyingα=0.3 外部我们的AES()映射。

这两种处理美学映射的方法有什么区别?

您所看到的每个美学映射也可以用作参数,也就是说,a fixed value defined outside of theAES()美学映射。当我们用蓝色绘制散点图时,你看到了如何使用颜色color = 'blue'above.Then,you saw how to do this with alpha when we set the transparency to 0.3 withα=0.3.现在让我们来看一个如何以相同方式处理形状的示例:

格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPGshape= 十八)

中心

在这里,we specify to use shape 18,它对应于你在这里看到的这个钻石形状。因为我们指定了这个外部AES(),这适用于此图中的所有点!

查看什么值shape大小,和阿尔法接受,只是运行?shape?大小,或?阿尔法从控制台窗口!For even more details,退房渐晕图(ggplot2规格)

ggplot中美学映射和参数的常见错误

当我第一次学习r和ggplot的时候,美学映射之间的差异(包括里面你的AES())和参数(其中外部你的AES())总是让我困惑。幸运的是,随着时间的推移,你会发现这是第二天性。But in the meantime,我可以帮助您在这个过程中加速一些常见的错误,您可以密切关注。

尝试包含美学映射外部你的AES()呼叫

如果你想绘制共青团variable toshape,你应该包括形状= CYLAES()你的吉姆点call.如果你不小心把它放在外面会怎么样?and instead runggplot(mtcars)+geom_点(aes(x=wt,Y=MPG)形状= CYL)?You'll get an error message that looks like this:


ggplot geom_line错误消息

每当您看到关于找不到对象的错误时,金宝搏网址一定要检查一下你是否包含了你的美学映射里面theAES()打电话!

Trying to specify parameters里面你的AES()呼叫

另一方面,如果我们尝试包含一个特定的参数值(例如,color = 'blue'里面AES()映射,这个错误不太明显。看一看:

格格图MTCAS) +吉姆点俄歇电子能谱X=重量y=MPG颜色= “蓝色”))

中心

在这种情况下,格格图实际上会产生散点图,但这不是我们想要的。

首先,积分都是红色而不是我们希望的蓝色!也,图中有一个简单地说“蓝色”的传说。

What's going on here?在引擎盖下,格格图has taken the string ‘blue' and effectively created a new hidden column of data where every value simple says ‘blue'.Then,它的mappedthat column to the color aesthetic,就像我们以前看到的那样颜色=AM.这将导致图例标签和正在设置的所有点的颜色,不要忧郁,但是默认的颜色格格图.

如果这令人困惑,现在还可以。记住:当你遇到这样的问题时,double check to make sure you're including the parameters of your graph外部你的AES()打电话!

现在您应该对如何使用格格图散点图函数,吉姆点

尝试一些你已经学会的东西来巩固你的理解。你可以下载我的免费工作簿with the code from this article to work through on your own.

我发现独自完成代码是我学习新主题的最佳方式,这样当我将来需要自己做事情时,我就能真正记住它们。

Download the workbook nowto practice what you learned!

留下评论for the author,please follow the link and comment on their blog: Learn R Programming & Build a Data Science Career | Michael Toth.

188bet appR博客提供 daily e-mail updates金宝搏网址 R新闻与 tutorials关于以下主题: 数据科学大数据, r作业,可视化(可视化) ggplot2Boxplotsmaps动画)程序设计(程序) 演播室SweaveLaTeXSQL日食吉特哈多普刮网)统计 回归主成分分析时间序列交易还有更多…



如果你走这么远,why not 订阅更新 from the site?选择您的口味: e-mail推特1188bet app,或 脸谱网...

Comments are closed.

搜索R-Blo188bet appggers


Sponsors

千万不要错过更新!
订阅R-Bloggers188bet app接收
e-mails with the latest R posts.
(您将不再看到此消息。)

单击此处关闭(此弹出窗口将不再出现)