[R语言] ggplot2入门笔记2—通用教程ggplot2简介

[R语言] ggplot2入门笔记2—通用教程ggplot2简介通用教程简介 Introduction To ggplot2 代码下载地址 以前 我们看到了使用 ggplot2 软件包制作图表的简短教程 它很快涉及制作 ggplot 的各个方面 现在 这是一个完整而完整的教程 现在讨论如何构造和自定义几

大家好,欢迎来到IT知识分享网。

通用教程简介(Introduction To ggplot2)

代码下载地址​​​ 以前,我们看到了使用ggplot2软件包制作图表的简短教程。它很快涉及制作ggplot的各个方面。现在,这是一个完整而完整的教程。现在讨论如何构造和自定义几乎所有ggplot。它涉及的原则,步骤和微妙之处,使图像的情节有效和更具视觉吸引力。因此,出于实用目的,我希望本教程可以作为书签参考,对您日常的绘图工作很有用。
这是ggplot2的三部分通用教程的第1部分,ggplot2是R中的美观(非常流行)的图形框架。该教程主要针对具有R编程语言的一些基本知识并希望制作复杂且美观的图表的用户与R ggplot2。

  • ggplot2简介(Introduction to ggplot2)
  • 自定义外观(Customizing the Look and Feel)
  • 前50个ggplot2可视化效果(top 50 ggplot2 Visualizations)

ggplot2简介涵盖了有关构建简单ggplot以及修改组件和外观的基本知识;自定义外观是关于图像的自定义,如使用多图,自定义布局操作图例、注释;前50个ggplot2可视化效果应用在第1部分和第2部分中学到的知识来构造其他类型的ggplot,例如条形图,箱形图等。

2 ggplot2入门笔记2—通用教程ggplot2简介

本章节简介涵盖了有关构建简单ggplot以及修改组件和外观的基本知识,该章节主要内容有:

  1. 了解ggplot语法(Understanding the ggplot Syntax)
  2. 如何制作一个简单的散点图(How to Make a Simple Scatterplot)
  3. 如何调整XY轴范围(How to Adjust the X and Y Axis Limits)
  4. 如何更改标题和轴标签(How to Change the Title and Axis Labels)
  5. 如何更改点的颜色和大小(How to Change the Color and Size of Points)
  6. 如何更改X轴文本和刻度的位置(How to Change the X Axis Texts and Ticks Location)

参考文档

​​http://r-statistics.co/Complete-Ggplot2-Tutorial-Part1-With-R-Code.html​​

1. 了解ggplot语法(Understanding the ggplot Syntax)

如果您是初学者或主要使用基本图形,则构造ggplots的语法可能会令人困惑。主要区别在于,与基本图形不同,ggplot适用于数据表而不是单个矢量。绘图所需的所有数据通常都包含在提供给ggplot()本身的数据框中,或者可以提供给各个geom。第二个值得注意的功能是,您可以通过向使用该ggplot()功能创建的现有图上添加更多层(和主题)来继续增强图。

让我们根据midwest数据集初始化一个基本的ggplot

# Setup # #关闭科学记数法,如1e+06 # turn off scientific notation like 1e+06 options(scipen=999) library(ggplot2) # load the data 载入数据 data("midwest", package = "ggplot2") # 显示数据 head(midwest) # Init Ggplot 初始化图像 # area and poptotal are columns in 'midwest' ggplot(midwest, aes(x=area, y=poptotal))
Warning message: "package 'ggplot2' was built under R version 3.6.1"

A tibble: 6 × 28

PID

county

state

area

poptotal

popdensity

popwhite

popblack

popamerindian

popasian

percollege

percprof

poppovertyknown

percpovertyknown

percbelowpoverty

percchildbelowpovert

percadultpoverty

percelderlypoverty

inmetro

category

<int>

<chr>

<chr>

<dbl>

<int>

<dbl>

<int>

<int>

<int>

<int>

<dbl>

<dbl>

<int>

<dbl>

<dbl>

<dbl>

<dbl>

<dbl>

<int>

<chr>

561

ADAMS

IL

0.052

66090

1270.9615

63917

1702

98

249

19.63139

4.

63628

96.27478

13.

18.01172

11.009776

12.

0

AAR

562

ALEXANDER

IL

0.014

10626

759.0000

7054

3496

19

48

11.24331

2.

10529

99.08714

32.

45.82651

27.

25.

0

LHR

563

BOND

IL

0.022

14991

681.4091

14477

429

35

16

17.03382

4.

14235

94.95697

12.068844

14.03606

10.

12.

0

AAR

564

BOONE

IL

0.017

30806

1812.1176

29344

127

46

150

17.27895

4.

30337

98.47757

7.

11.17954

5.

6.

1

ALU

565

BROWN

IL

0.018

5836

324.2222

5264

547

14

5

14.47600

3.

4815

82.50514

13.

13.02289

11.

19.

0

AAR

566

BUREAU

IL

0.050

35688

713.7600

35157

50

65

195

18.90462

3.

35107

98.37200

10.

14.15882

8.

11.008586

0

AAR

[R语言] ggplot2入门笔记2—通用教程ggplot2简介

上面绘制了一个空白ggplot。即使指定了x和y,也没有点或线。这是因为ggplot并不假定您要绘制散点图或折线图。我只告诉ggplotT使用什么数据集,哪些列应该用于X和Y轴。我没有明确要求它画出任何点。还要注意,该aes()功能用于指定X和Y轴。这是因为,必须在aes()函数中指定属于源数据帧的任何信息。

2. 如何制作一个简单的散点图(How to Make a Simple Scatterplot)

让我们通过使用称为的geom层添加散点图,在空白ggplot基础制作一个散点图geom_point。

library(ggplot2) ggplot(midwest, aes(x=area, y=poptotal)) + geom_point()
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

g <- ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + # set se=FALSE to turnoff confidence bands # 设置se=FALSE来关闭置信区间 geom_smooth(method="lm", se=TRUE) plot(g)
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

最合适的线是蓝色。您能找到其他method可用的选项geom_smooth吗?(注意:请参阅geom_smooth)。您可能已经注意到,大多数点都位于图表的底部,看起来并不好看。因此,让我们更改Y轴限制以关注下半部分。

3. 如何调整XY轴范围(How to Adjust the X and Y Axis Limits)

X轴和Y轴范围可以通过两种方式控制。

3.1 方法1:通过删除范围之外的点

与原始数据相比,这将更改最佳拟合线或平滑线。这可以通过xlim()和ylim()完成。可以传递长度为2的数值向量(具有最大值和最小值)或仅传递最大值和最小值本身。

library(ggplot2) # set se=FALSE to turnoff confidence bands # 设置se=FALSE来关闭置信区间 g <- ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + geom_smooth(method="lm") # Delete the points outside the limits # deletes points 删除点 g + xlim(c(0, 0.1)) + ylim(c(0, )) # g + xlim(0, 0.1) + ylim(0, )
Warning message: "Removed 5 rows containing non-finite values (stat_smooth)." Warning message: "Removed 5 rows containing missing values (geom_point)."
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

3.2 方法2:放大

另一种方法是通过放大感兴趣的区域而不删除点来更改X和Y轴限制。这是使用coord_cartesian()完成的。让我们将该图存储为g1,由于考虑了所有要点,因此最佳拟合线没有改变。

library(ggplot2) g <- ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + # set se=FALSE to turnoff confidence bands geom_smooth(method="lm") # Zoom in without deleting the points outside the limits. # As a result, the line of best fit is the same as the original plot. # 放大而不删除超出限制的点。因此,最佳拟合线与原始图相同。 g1 <- g + coord_cartesian(xlim=c(0,0.1), ylim=c(0, )) plot(g1)
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

4. 如何更改标题和轴标签(How to Change the Title and Axis Labels)

我将其存储为g1。让我们为X和Y轴添加绘图标题和标签。这可以一次性使用来完成labs()与功能title,x和y参数。另一种选择是使用ggtitle(),xlab()和ylab()

library(ggplot2) # 画图 # set se=FALSE to turnoff confidence bands g <- ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + geom_smooth(method="lm") # 限制范围 g1 <- g + coord_cartesian(xlim=c(0,0.1), ylim=c(0, )) # zooms in # Add Title and Labels # 添加标签,标题名,小标题名,说明文字 g1 + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", captinotallow="Midwest Demographics")
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

# 另外一种方法 g1 + ggtitle("Area Vs Population", subtitle="From midwest dataset") + xlab("Area") + ylab("Population")
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

优秀!因此,这是完整功能调用。

# Full Plot call library(ggplot2) ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + geom_smooth(method="lm") + coord_cartesian(xlim=c(0,0.1), ylim=c(0, )) + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", captinotallow="Midwest Demographics")
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

5. 如何更改点的颜色和大小(How to Change the Color and Size of Points)

本节主要内容有:

  • 如何将颜色和尺寸更改为静态?(How to Change the Color and Size To Static?)
  • 如何更改颜色以在另一列中反映类别?(How to Change the Color To Reflect Categories in Another Column?)

5.1 如何将颜色和尺寸更改为静态?(How to Change the Color and Size To Static?)

我们可以通过修改相应的几何图形来改变几何图形图层的美感。让我们将点和线的颜色更改为静态值。

library(ggplot2) # 画图 ggplot(midwest, aes(x=area, y=poptotal)) + # Set static color and size for points # 设置固定颜色和尺寸 geom_point(col="steelblue", size=3) + # change the color of line # 更改拟合直线颜色 geom_smooth(method="lm", col="firebrick") + coord_cartesian(xlim=c(0, 0.1), ylim=c(0, )) + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", captinotallow="Midwest Demographics")
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

5.2 如何更改颜色以在另一列中反映类别?(How to Change the Color To Reflect Categories in Another Column?)

假设我们要根据源数据集中的另一列更改颜色midwest,则必须在aes()函数内指定颜色。

library(ggplot2) gg <- ggplot(midwest, aes(x=area, y=poptotal)) + # Set color to vary based on state categories. # 根据状态类别将颜色设置为不同。 geom_point(aes(col=state), size=3) + geom_smooth(method="lm", col="firebrick", size=2) + coord_cartesian(xlim=c(0, 0.1), ylim=c(0, )) + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", captinotallow="Midwest Demographics") plot(gg)
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

现在,每个点都基于aes所属的状态(col=state)上色。不只是颜色,大小、形状、笔划(边界的厚度)和填充(填充颜色)都可以用来区分分组。作为附加的优点,图例将自动添加。如果需要,可以通过在theme()函数中将legend.position设置为None来删除它。

# remove legend 移除图例 gg + theme(legend.positinotallow="None")
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

另外,您可以用调色板完全更改颜色。

# change color palette 更改调色板 gg + scale_colour_brewer(palette = "Set1")
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

在RColorBrewer软件包中可以找到更多这样的调色板,具体颜色显示见​​网页​​

library(RColorBrewer) head(brewer.pal.info, 10)

A data.frame: 10 × 3

maxcolors

category

colorblind

<dbl>

<fct>

<lgl>

BrBG

11

div

TRUE

PiYG

11

div

TRUE

PRGn

11

div

TRUE

PuOr

11

div

TRUE

RdBu

11

div

TRUE

RdGy

11

div

FALSE

RdYlBu

11

div

TRUE

RdYlGn

11

div

FALSE

Spectral

11

div

FALSE

Accent

8

qual

FALSE

6. 如何更改X轴文本和刻度的位置(How to Change the X Axis Texts and Ticks Location)

本节主要内容有:

  • 如何更改X和Y轴文本及其位置?(How to Change the X and Y Axis Text and its Location?)
  • 如何通过设置原始值的格式为轴标签编写自定义文本?(How to Write Customized Texts for Axis Labels, by Formatting the Original Values?)
  • 如何使用预置主题一次性定制整个主题?(How to Customize the Entire Theme in One Shot using Pre-Built Themes?)

6.1 如何更改X和Y轴文本及其位置?(How to Change the X and Y Axis Text and its Location?)

好了,现在让我们看看如何更改X和Y轴文本及其位置。这涉及两个方面:breaks和labels。

第1步:设置breaks
坐标轴间隔breaks的范围应该与X轴变量相同。注意,我使用的是scale_x_continuous,因为X轴变量是连续变量。如果它是一个日期变量,那么可以使用scale_x_date。与scale_x_continuous()类似,scale_y_continuous()也可用于Y轴。

library(ggplot2) # Base plot gg <- ggplot(midwest, aes(x=area, y=poptotal)) + # Set color to vary based on state categories # 设置颜色 geom_point(aes(col=state), size=3) + geom_smooth(method="lm", col="firebrick", size=2) + coord_cartesian(xlim=c(0, 0.1), ylim=c(0, )) + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", caption="Midwest Demographics") # Change breaks # 改变间距 gg + scale_x_continuous(breaks=seq(0, 0.1, 0.01))
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

第2步:更改labels
可以选择更改labels轴刻度。labels取与长度相同的向量breaks。通过设置labels从a到k的字母进行演示(尽管在这种情况下它没有任何意义)。

library(ggplot2) # Base plot gg <- ggplot(midwest, aes(x=area, y=poptotal)) + # Set color to vary based on state categories # 设置颜色 geom_point(aes(col=state), size=3) + geom_smooth(method="lm", col="firebrick", size=2) + coord_cartesian(xlim=c(0, 0.1), ylim=c(0, )) + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", captinotallow="Midwest Demographics") # Change breaks + label # letters字母表 gg + scale_x_continuous(breaks=seq(0, 0.1, 0.01), labels = letters[1:11])
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

如果需要反转刻度,请使用scale_x_reverse()/scale_y_reverse()

library(ggplot2) # Base plot gg <- ggplot(midwest, aes(x=area, y=poptotal)) + # Set color to vary based on state categories # 设置颜色 geom_point(aes(col=state), size=3) + geom_smooth(method="lm", col="firebrick", size=2) + coord_cartesian(xlim=c(0, 0.1), ylim=c(0, )) + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", captinotallow="Midwest Demographics") # Reverse X Axis Scale # 反转x轴 gg + scale_x_reverse()
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

6.2 如何通过设置原始值的格式为轴标签编写自定义文本?(How to Write Customized Texts for Axis Labels, by Formatting the Original Values?)

让我们设置Y轴文本的breaks,并设置X轴和Y轴标签。我用了两种方法格式化标签。方法1:使用sprintf()。(在下面的示例中,将其格式化为%)* 方法2:使用自定义的用户定义函数。(按1000到1K的比例格式化)

library(ggplot2) # Base plot gg <- ggplot(midwest, aes(x=area, y=poptotal)) + # Set color to vary based on state categories # 设置颜色 geom_point(aes(col=state), size=3) + geom_smooth(method="lm", col="firebrick", size=2) + coord_cartesian(xlim=c(0, 0.1), ylim=c(0, )) + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", captinotallow="Midwest Demographics") # Change Axis Texts gg + # 更改x轴 scale_x_continuous(breaks=seq(0, 0.1, 0.01), labels = sprintf("%1.2f%%", seq(0, 0.1, 0.01))) + # 更改y轴 scale_y_continuous(breaks=seq(0, , ), labels = function(x){paste0(x/1000, 'K')})
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

6.3 如何使用预置主题一次性定制整个主题?(How to Customize the Entire Theme in One Shot using Pre-Built Themes?)

最后,我们可以使用预先构建的主题来更改整个主题本身,而不是单独更改主题组件。帮助页面?theme_bw显示了所有可用的内置主题。这通常是通过两种方式来实现的。在绘制ggplot之前,使用theme_set()设置主题。请注意,此设置将影响将来的所有绘图。或者绘制ggplot,然后添加整个主题设置(例如theme_bw())

library(ggplot2) # Base plot gg <- ggplot(midwest, aes(x=area, y=poptotal)) + # Set color to vary based on state categories. geom_point(aes(col=state), size=3) + geom_smooth(method="lm", col="firebrick", size=2) + coord_cartesian(xlim=c(0, 0.1), ylim=c(0, )) + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", captinotallow="Midwest Demographics") gg <- gg + scale_x_continuous(breaks=seq(0, 0.1, 0.01)) # method 1: Using theme_set() theme_set(theme_classic()) gg
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

# method 2: Adding theme Layer itself. # 添加主题层 gg + theme_bw() + labs(subtitle="BW Theme")
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

gg + theme_classic() + labs(subtitle="Classic Theme")
[R语言] ggplot2入门笔记2—通用教程ggplot2简介

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/108458.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信