R语言:ggplot2包详解及各类精美图形绘制

文章目录

          • 1.1 Ggplot2介绍
          • 1.2 Ggplot2特点
            • 默认值
            • 迭代
            • 高级元素
          • 1.3 Ggplot2映射组件
            • layer
            • Scale
            • coord
            • theme
          • 1.4 Ggplot2自带数据集
          • 1.5 Ggplot2组成部分
          • 1.6 美观性参数
          • 1.7 多子图绘制
          • 1.8 图形类型与函数
          • 1.9 曲线拟合
          • 1.10 箱线图
          • 1.11 频率直方图与密度曲线
          • 1.12 柱状图
          • 1.13 时间序列
          • 1.14 散点图

1.1 Ggplot2介绍

ggplot2是一个R包,用于生成统计或数据图形。

与大多数其他图形包不同,ggplot2有一个基于图形语法的底层语法,允许通过组合独立的组件来组成图形。

可以根据特定的问题创建新的图形,而不是局限于预定义的图形集,这就是ggplot2的强大之处。

Ggplot2实际上很容易学习:有一组简单的核心原则,很少有特殊情况。

1.2 Ggplot2特点
默认值

Ggplot2提供了漂亮的、简便使用的图形,用户不必关心绘制图例等繁琐的细节。

它提供了大量的默认值,这意味着用户可以在短时间内生成并发布高质量的图形。用户不必花费时间使图形看起来更漂亮,而是可以专注于创建最能揭示数据中的信息的图形。

但如果确实有特殊的格式要求,ggplot2也提供了许多可修改的方式。

迭代

Ggplot2包迭代地进行工作。从显示原始数据开始,然后添加注释和统计层。

这允许用户使用与设计分析相同的结构化思维来生成图形。这可以缩短你脑海中的图片和书本上的图片之间的距离。这对那些还没有掌握专家使用的结构化分析方法的学生尤其有帮助。

高级元素

大多数图形包只是一个特殊图形的集合。例如,在R环境下,如果你设计了一个由原始的图形元素(如线和点)组成的图形,很难设计出与现有的图形相结合的新组件。在ggplot2中,用于创建新图形的表达式由更高级的元素组成,比如原始数据和统计转换的表示,这些元素可以很容易地与新数据集和其他图组合。

1.3 Ggplot2映射组件

所有的图都是由数据、你想要可视化的信息和映射(描述数据变量如何映射到属性)组成的。映射组件如下:

layer

层是几何元素和统计变换的集合。几何元素(简写为geoms)代表你在图形中实际看到的东西:点、线、多边形等。统计转换,简称stats,对数据进行总结:例如,对观察结果进行分类和计数以创建一个直方图,或拟合一个线性模型。

Scale

比例尺将数据空间中的值映射到空间中的值。这包括颜色、形状和大小的使用。比例尺还绘制图例和轴,这使得从图中读取原始数据值成为可能(反向映射)。

coord

坐标或坐标系描述数据坐标如何映射到图形的平面。它还提供了坐标轴和网格线来帮助阅读图表。我们通常使用笛卡尔坐标系,但也有其他一些可用的坐标系,包括极坐标和地图投影。

theme

主题控制显示的细节,比如字体大小和背景颜色。虽然ggplot2中的默认值已经经过作者的仔细思考选择,但用户可能仍需要参考其他资料来创建一个更加有吸引力的图。

1.4 Ggplot2自带数据集

使用捆绑在ggplot2: mpg中的一个数据集。它包括1999年和2008年流行车型的燃油经济性信息,由美国环境保护署(http://fueleconomy.gov)收集。你可以通过加载ggplot2来访问数据:

> library(ggplot2)
> mpg
# A tibble: 234 x 11manufacturer 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~ f        18    29 p     comp~2 audi         a4           1.8  1999     4 manu~ f        21    29 p     comp~3 audi         a4           2    2008     4 manu~ f        20    31 p     comp~4 audi         a4           2    2008     4 auto~ f        21    30 p     comp~5 audi         a4           2.8  1999     6 auto~ f        16    26 p     comp~6 audi         a4           2.8  1999     6 manu~ f        18    26 p     comp~7 audi         a4           3.1  2008     6 auto~ f        18    27 p     comp~8 audi         a4 quattro   1.8  1999     4 manu~ 4        18    26 p     comp~9 audi         a4 quattro   1.8  1999     4 auto~ 4        16    25 p     comp~
10 audi         a4 quattro   2    2008     4 manu~ 4        20    28 p     comp~
# ... with 224 more rows

这些变量大多是不言自明的:

  • Cty和hwy记录了城市和高速公路行驶的每加仑英里数。
  • Displ是以升为单位的发动机排量。
  • DRV是传动系统:前轮(f),后轮®或四轮(4)。
  • Model是汽车的型号。有38款车型入选,因为它们在1999年至2008年期间每年都会推出新版。
  • class是描述汽车“类型”的分类变量:双座、SUV、紧凑型等。
1.5 Ggplot2组成部分

组成部分:

  • 数据
  • 数据中的变量和视觉属性之间的一组映射
  • 至少存在一个layer描述如何渲染每个观察,层通常使用geom函数创建

比如:

ggplot(mpg, aes(x = displ, y = hwy)) + geom_point()

注意观察上述代码的形式:

数据和映射在ggplot()中传入,然后用+添加层。

得到绘图结果如下:

在这里插入图片描述

此案例中的组成部分:

  • 数据:mpg
  • 映射:displ映射到x位置,hwy映射到y位置。
  • 层:geom_point()

这幅图显示了一种很强的相关性:随着发动机尺寸(displ)的增大,燃油经济性(hwy)就会变差。

1.6 美观性参数

与数据x,y相同 这些参数也在aes()中调用,如这样的方式

aes(displ, hwy, colour = class)
aes(displ, hwy, shape = drv)
aes(displ, hwy, size = cyl)

在这里插入图片描述

colour = class给每一个点一个独特的颜色对应它的类别。这个图例允许我们从颜色中读取数据值。

如果您想修改图片的美观性参数,而不缩放它的尺寸,请在aes()之外的单个层中这样做,如下方式:

ggplot(mpg, aes(displ, hwy)) + geom_point(aes(colour = "blue"))
ggplot(mpg, aes(displ, hwy)) + geom_point(colour = "blue")

在这里插入图片描述
在这里插入图片描述

同样是使用"blue"蓝色作为输入,但前一图被调整为粉红色并添加了图例,后一图则正确显示了蓝色。

当在图形中使用美学属性时,少即是多。我们很难同时看到颜色、形状和大小之间的关系,所以在使用美学时要克制。不要试图制作一个非常复杂的图形,同时展示一切,去创造一系列简单的图形,讲述一个故事,引导读者从无知到知识。

1.7 多子图绘制

在图形上显示附加类别变量的另一种技术是子图。Faceting通过将数据划分为子集并为每个子集显示相同的图形来创建图形表。

存在两种类型的子图技术 grid 与 wrapped

在末尾进行追加即可

ggplot(mpg, aes(displ, hwy)) + geom_point() + facet_wrap(~class)

在这里插入图片描述

1.8 图形类型与函数

Geom_point()将数据散点描绘在坐标轴中,表示数据的分布状况。

Geom_smooth()为数据提供平滑器并显示平滑器及其标准误差。

Geom_boxplot()生成一个箱线图来总结一组点的分布。

Geom_histogram()和geom_freqpoly()表示连续变量的分布。

Geom_bar()显示类别变量的分布。

Geom_path()和geom_line()在数据点之间绘制直线。线状图被限制为从左到右移动的线,而路径可以向任何方向移动。线条通常用于探索事物随时间的变化。

1.9 曲线拟合

可以单独或是联合使用 例如:

ggplot(mpg, aes(displ, hwy)) + geom_point() + geom_smooth()

在这里插入图片描述

这用平滑的曲线覆盖了散点图,包括以灰色显示的点的置信区间形式对不确定性的评估。如果您对置信区间不感兴趣,可以使用geom_smooth(se = FALSE)关闭它。

参数:

geom_smooth()的一个重要参数是method,它允许您选择使用哪种类型的模型来拟合光滑曲线.

可选值如 “loess” " lm" “gam” “rlm”

span控制线条摆动程度 0~1逐渐平稳

1.10 箱线图

最基础的箱线图代码:

ggplot(mpg, aes(drv, hwy)) + geom_boxplot()
ggplot(mpg, aes(drv, hwy)) + geom_violin()

在这里插入图片描述

在这里插入图片描述

它们可以很简单地调整样式 通过size colour shape fill等属性,例如此处我们增加填充色

ggplot(mpg, aes(drv, hwy)) + geom_violin(fill = "blue")

在这里插入图片描述

1.11 频率直方图与密度曲线

一行代码:

ggplot(数据, aes(数值变量)) + geom_histogram()/ geom_freqpoly()

示例:

ggplot(mpg, aes(hwy)) + geom_histogram()

在这里插入图片描述

ggplot(mpg, aes(hwy)) + geom_freqpoly()

在这里插入图片描述

直方图和密度曲线的工作原理是一样的:它们将数据归类,然后计算每个归类中的观察次数。唯一的区别是显示:直方图使用柱状图,密度曲线使用折线。

参数:

你可以用binwidth参数来控制箱子的宽度

如果你不想要均匀间隔的箱子,使用breaks参数。

ggplot(mpg, aes(hwy)) + geom_histogram(binwidth = 10.5)

在这里插入图片描述

能够观察到分组减少了许多。

1.12 柱状图

进行计数或是展示数值。

ggplot(mpg, aes(manufacturer)) + geom_bar()

在这里插入图片描述

1.13 时间序列

在x轴上有时间,显示单个变量随时间的变化,通常以折线图的方式进行时间序列数据的展示。

代码方式与之前类似

ggplot(economics, aes(date, unemploy / pop)) +geom_line()
ggplot(economics, aes(date, uempmed)) +geom_line()

在这里插入图片描述

在这里插入图片描述

为了更详细地研究这种关系,我们想在同一个图上绘制两个时间序列。我们可以画出失业率与失业时间长短的散点图,但这样我们就无法看到随着时间的演变。解决方法是将时间上与线段相邻的点连接起来,形成路径图,并进行颜色深浅度的区分。

在这里插入图片描述

更加直观观察双变量在时间推移下的变化。

1.14 散点图
ggplot(mpg, aes(displ, hwy)) + geom_point(colour = "blue")

拥有数据集,从中选择X轴与Y轴数据,并加入geom_point层,即可绘制散点图。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35169.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言学习—— ggplot2函数

最近在自学R语言&#xff0c;但是从纯粹的理论开始学习太慢了而且没有实操不太行&#xff0c;所以目前是在实际应用中查漏补缺&#xff0c;遇到什么临时学什么&#xff0c;然后把笔记都一一记录下啦。分享出来一边是方便自己查找&#xff0c;另一方面也是想方便和我一样入门的菜…

R语言可视化【ggplot2】

R语言可视化【ggplot2】 文章的文字/图片/代码部分/全部来源网络或学术论文或课件&#xff0c;文章会持续修缮更新&#xff0c;仅供学习使用。 目录 R语言可视化【ggplot2】 一、可视化介绍 二、不同情况适用的图形 类别比较&#xff1a; 数值关系&#xff1a; 数据分布…

马斯克成立XAI公司: 探索宇宙的真实本质

尊敬的读者朋友们&#xff0c;欢迎来到CSDN&#xff01;我是CSDN博主&#xff0c;今天非常高兴为大家带来这篇文章&#xff0c;我们将一起探索马斯克成立xAI公司的意义和目标&#xff0c;以及这个活动的丰富内容。让我们一起踏上这场奇幻之旅&#xff01; 【引言】 在科技界的…

2023年十大科技趋势预测【集锦:机构和GPT们的科技趋势预测,欢迎大家前来围观,看看谁预测得准~~~】

目录 2023年十大科技趋势预测——Claude+ 2023年十大科技趋势预测——GPT-4 1. 量子计算

不止ChatGPT,谷歌云 AI 方案早已厉兵秣马!

【本文由Cloud Ace整理发布&#xff0c;更多内容请访问 Cloud Ace 官网】 近日 ChatGPT 爆火&#xff0c;掀起热议&#xff0c;能聊天能写代码&#xff0c;还能写策划稿&#xff0c;AI 似乎已逐渐变得无所不能。 不过在 AI 对话上&#xff0c;谷歌早在17年就提出了 Dialogflow …

同声传译例子

效果&#xff1a; 准备开源中… 包括&#xff1a; 前端后端架构数据处理模型原理模型训练模型推理测试集评价方法&脚本部分数据

微信小程序 -- 获取语音,并将语音转为文字(插件:微信同声传译)

实现的功能是获取语音&#xff0c;并将语音转为文字&#xff0c;实现效果如下&#xff1a; 1. 小程序后台添加插件&#xff1a;微信同声传译 登录小程序后台&#xff1a;https://mp.weixin.qq.com 11. 设置 -> 第三方设置 -> 添加插件 12. 输入“微信同声传译”&#…

小程序使用微信同声传译进行语言播报(数字播报问题)

小程序使用微信同声传译进行语言播报&#xff08;数字播报问题&#xff09; 需求是产品提的 代码是我写的&#xff08;没办法&#xff0c;卑微打工人&#xff09; 废话不多说直接开始吧 首先在微信微信公众平台插件管理引入插件&#xff08;微信同声传译插件地址&#xff09;…

微信公众平台-设置-第三方设置-插件-搜不到微信同声传译插件

给小程序添加插件&#xff0c;按照官方的方法在插件那里搜不到微信同声传译插件 只好去微信服务平台搜一下 找到了微信同声传译&#xff0c;登录后选择给哪个小程序添加&#xff0c;添加成功后去小程序的微信公众平台看已经添加成功了&#xff0c;而且是已通过状态。

电影、音频同声传译教程(免费实现)

实现思路 实时语音转写&#xff08;需要申请一个在线的语音转写api接口&#xff09;实时文字翻译&#xff08;需要申请一个即时翻译的api接口&#xff09; 实现 申请阿里云的语音转写api 阿里云网址&#xff1a;https://cn.aliyun.com/ 注册&#xff1a;用支付宝扫码注册即…

python实现免费同声传译 (离线语音识别+免费翻译接口+系统声音录制)

前言 前段时间碰到个英文面试&#xff0c;结果差点因为听不懂美式发音的python&#xff08;派送&#xff09;而GG了。。。我一直说的都是"派森"。。。所以就有个想法&#xff0c;英文电话会议的时候是不是可以做一个实时翻译的小工具&#xff0c;这样就可以给我这样…

uni-app 微信同声传译,实现AI语音功能(语音转文字,文字转语音,英汉互译

uni-app 微信同声传译&#xff0c;实现AI语音功能&#xff08;语音转文字&#xff0c;文字转语音&#xff0c;英汉互译&#xff09; 一&#xff1a;添加插件1、登录微信公众号平台&#xff0c;进入左边导航栏的设置&#xff0c;选择第三方设置&#xff0c;&#xff0c;添加插件…

小程序之定位语音识别=>插件:微信同声传译

说明:文章部分内容及图片出自网络&#xff0c;如有侵权请与我本人联系(主页有公众号:小攻城狮学前端) 作者&#xff1a;小只前端攻城狮、 主页&#xff1a;小只前端攻城狮的主页、 首发&#xff1a;掘金 GitHub&#xff1a;P-J27、 CSDN&#xff1a;PJ想做前端攻城狮 著作权归作…

关于使用微信同声传译报错的问题

最近开发微信小程序&#xff0c;需要用到语音识别的功能&#xff0c;于是就用了微信官方的微信同声传译的插件&#xff0c;但是使用的时候报错了&#xff0c;我使用了云开发&#xff0c;后来经过这是误报&#xff0c;可以忽略&#xff0c;类似的报错也是可以忽略的

百度新突破:AI同声传译系统STACL,可预测,低延迟

文章来源&#xff1a;ATYUN AI平台 百度开发了新的AI系统&#xff0c;名为同声传译和预期与可控延迟&#xff08;STACL&#xff09;&#xff0c;百度声称这代表了自然语言处理的重大突破。 与大多数AI翻译系统不同&#xff0c;STACL能够在演讲者讲话后几秒钟开始翻译&#x…

语音识别+语音合成+同声传译 微信小程序

语音识别语音合成同声传译 微信小程序 代码库链接为&#xff1a;https://github.com/Resulte/SpeechProcessMiniProgram &#xff08;希望您去Github的时候顺便给个Star&#xff09; 项目预览 扫描下方小程序码&#xff0c;即可查看预览&#xff1a; 主页 语音识别 #### 语…

“同声传译”的难度有多大?

同声传译&#xff0c;简称“同传”&#xff0c;又称“同声翻译”、“同步口译”&#xff0c;是指译员在不打断讲话者讲话的情况下&#xff0c;不间断地将内容口译给听众的一种翻译方式。 同声传译作为一种翻译方式&#xff0c;其最大特点在于效率高&#xff0c;原文与译文翻译…

小程序=》添加同声传译插件,做简单的播放文本功能

一、进入小程序管理后台&#xff0c;菜单拉到最底下的“设置” 二、设置》第三方设置》插件管理》添加插件&#xff0c;输入“微信同声传译”即可添加 三、修改app.json文件&#xff0c;plugins节点下增加 "WechatSI": {"version": "0.3.5",&qu…

中英同声传译,线上同声传译服务

疫情期间&#xff0c;线上会议需求量激增&#xff0c;英信翻译升级同传翻译功能&#xff0c;制定线上同传大会解决方案&#xff0c;可远程快速接入&#xff0c;以线上同传(云同传)形式为大会提供全流程实时同传翻译服务。 3月份&#xff0c;“中信证券年度业绩交流会”会议以网…

交替传译和同声传译哪个难

我们知道&#xff0c;交替传译和同声传译是会议口译的高级形式。在涉外会议和商务活动中&#xff0c;往往根据需要采用这两种不同的口译方式。那么&#xff0c;针对交替传译Consecutive Interpreting和同声传译 Simultaneous Interpretation&#xff0c;这两种口译方式哪种比较…