r语言散点图_R语言 | 散点图入门:以声学元音图为例

R语言

语言学与R语言的碰撞

Xu & Yang

PhoneticSan

426026767d90dd27e9f3aeed7acb3630.png

学习参考

Discovering Statistics Using R

Statistics for Linguistics with R

How to Do Linguistics with R

R in Action

Analyzing Linguistic Data

R Graphics Cookbook

··· ···

Recap

  1. 可以使用plot( )函数进行基础的制图。

  2. 调用ggplot2包可以使用ggplot( )函数进行数据可视化,函数的基本原理是多个图层的叠加,使用+可以不断叠加需要的图层。

  3. 使用facet_grid( )和facet_wrap( )函数可以将数据分组可视化,以便更直观地观察繁多的数据。

78255f632766244e0e419ec0d10d3110.png

R: The R Project for Statistical Computing

https://www.r-project.org/

IDE:

https://rstudio.com/

注:本文参考R Graphics Cookbook一书第五章与Discovering Statistics Using R第四章第五节

R Project

Linguistics

1

 散点图概述

对于散点图我们并不陌生,在Excel中我们也经常看到它的身影。在上一篇可视化初阶的文章中,我们看到使用geom_point( )函数就可以指定成为散点图了。为了方便起见,我们使用gcookbook包中的数据来做一次最基本的散点图。如果没有安装过这个包,请记得使用intall.packages( )函数安装,然后使用library( )函数加载gcookbook和ggplot2两个包。下面我们要画的是heightweight中的数据。为了方便操作,我们可以使用summary( )函数先看看这个数据里都有什么内容。可以看到里面有这样几项:性别、年、月、身高、体重。我们先以ageYear和heightIn为例画散点图。

9a3db020b0b7846ebac3cdec6a52afba.png

运行结果

我们使用上一篇所提到的ggplot函数来进行数据可视化操作。首先,我们告诉ggplot( )函数要画图的数据源,然后在aes( )中设定好我们的x轴和y轴,最后在叠加一个散点图层,这样就完成散点图的基本操作了。

51ebda68f9bc4dc03808220cefe6504c.png

基本的散点图

根据之前提到的,很多时候我们的数据想要展示众多内容,比如,我想在一个数据图里既展示性别,又展示年份增长的身高,这时候,我们可以使用不同的形状和颜色来进行区分。比如我们以颜色进行性别区分,那么保证数据中“性别”数据是以factor形式存在的,然后我们直接加入color=sex即可,也就是把分颜色的任务交给R去做,运行结果如下。当然,你也可以使用shape=sex用形状进行区分,运行结果你可以自己试一试。

d8445766c691cd4d39c9e6ddd4985b1f.png

性别分组散点图

这时候有的人就会想法更大了:你看这个heightweight数据中,既然有身高和体重,如果我想有性别分组的时候,还加入体重,该怎么办呢?其实很简单,我们回顾一下ggplot( )函数中我们可以选择的图形对象,有线条、大小、形状等等,我们不妨使用size来实验一下,可以看到,横坐标是ageYear,纵坐标是heightIn,我们以颜色区分了性别,大小区分了体重。

c4993816682d002101c6b314996a98be.png

颜色区分性别,大小区分体重

或者,我觉得这样不好看,我用形状来区分性别,用颜色深浅来区分不同的体重,我们可以看到,R会自动帮我们进行颜色深浅的标示体重,具体运行结果如下所示。

632539d26b8415cb1a842d2db18436d5.png

形状区分性别,颜色区分体重

不过,这样看起来不太美观,我们见到很多图都是看起来美美的,略带透明感的图标,能不能实现?当然可以,而且实现起来很方便。我们又要回到上一篇中提到的众多图形参数中,有一个参数你肯定很奇怪:alpha,这是调整图形透明度的,范围是[0,1],加入这个我们就可以看到它的透明度发生了变化。

53b1b31b2e5c419c53e3e1e2843a010e.png

调整透明度

在散点图中,还有很多属性还没有挖掘到,我们日后会慢慢介绍更多的散点图操作,如添加回归曲线,添加置信区间等等,这些操作都是在这些美化基础之上得到的。因此,我们要把这些散点图最基本的元素牢牢记住。

R Project

Linguistics

2

 声学元音图

在语音的元音研究中,最常见的一个图就是声学元音图,它的横纵坐标分别表示了F1和F2的数值,从而更加清晰地表明该语言元音的大体分布。其实我们仔细掰开来想,声学元音图本质上是调换了坐标轴方向的散点图,因此我们可以使用ggplot( )函数中的散点图写出脚本,轻松地绘制出我们所需要的声学元音图,不必每次都打开Excel和画图一点点绘制。

d0f4dbca6394b6d728d514636c92523e.png

林茂灿(2005) 汉语语音研究的几个问题

首先,我们先“搞到”一些元音的共振峰数据,此处我们使用了六个元音的F1和F2数值,一共有三列数据:元音、F1、F2。在载入数据前,务必记得载入ggplot2包,这样我们才能使用ggplot( )函数。

724c906bbfe7254d1705b83cbdc633cb.png

元音原始数据

下面我们就可以准备开始画图了。首先,我们需要确定好横纵坐标。根据我们之前看到的声学元音图,可以发现横坐标是F2,纵坐标是F1,我们可以使用不同形状或颜色来表示不同的元音,那么运行结果如下图所示。

a15396850131861128e2c1df7e030d8a.png

散点图初步设置

可以很清楚地看到,这和我们传统上的声学元音图不一样,因为我们习惯性用左上角来标示/i/,从而体现它舌位前和高的特性,那么我们需要把这个坐标轴进行调换,调换所使用的函数名也很简单,分别是scale_x_reverse( )scale_y_reverse( )函数,括号内表明调换的位置,比如我们这里需要把横坐标放到上边,纵坐标放到右边,这样我们就可以得到这样的图形了。

ec091f7561d987adf3a3b2c43ce42441.png

调换后的声学元音图

调换完后,其实这个图已经比较接近了。但是,我不想让点成为我的标签,或者形状成为标签,我想直接使用对应的元音音标成为标签可以吗?当然可以。在上一篇我们介绍不同的图形对象的时候,有一个geom_text( )函数,它可以实现用文本来标示我们需要的内容。那么,我们把geom_point( )函数替换为geom_text( ),同时我们需要告诉这个函数我们的标签(label)是什么,因此我们在aes( )函数中,表明我们的label来源于我们数据中vowel这一列。同时,我们既然已经用音标来表示数据了,我们可以添加theme( )函数来隐藏掉旁边的那个烦人的数据标签,具体代码为theme(legend.position="none")即可,那么运行结果就比较好看了。

3133299fdcedc16d2f57db877379bccf.png

直接使用音标表示数据

最后,我们再画上表示这个音标范围,也就是那个椭圆来表示置信水平,我们使用stat_ellipse( )函数即可,什么参数也不设置的话,就是用实线来圈起来,我们可以设置线型(linetype),也可以设置填充色(填充色以标签为准,那么fill=vowel)等等,最终我们可以得到完整的声学元音图。保存我们写好的脚本,以后再进行声学元音图的绘制,直接导入数据,点击运行就可以实现了。

2ad56cab553347e31b4deb81b6b593b3.png

—END—

排版:Xu & Yang

265d6dc70e201ac24fb091c920f5086b.pngc4993816682d002101c6b314996a98be.png

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

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

相关文章

mysql创建表里主码和外码_SQL语言创建表时候怎么定义主码和外码

展开全部SQL语言创建表时候用Primary Key(属性名)定义主码,用Foreign Key(属性名)定义外码。主码是一种唯一关键字,表定62616964757a686964616fe59b9ee7ad9431333433623064义的一部分。一个表的主码可以由多个关键字共同组成,并且主码的列不能…

unity镜头边缘羽化_【后期修图】如何利用Ps中的自适应广角滤波器校正镜头失真?...

当用广角镜头拍摄对象时,透视问题通常以线条的形式出现,这应该是直的,但看起来是弯曲的和扭曲的。这通常被称为桶形失真,其主要发生在广角镜头中,因为图像的放大率越远,主体离镜头的光轴越远。简单来说&…

用引用返回值(转)

函数返回值时&#xff0c;要生成一个值的副本。而用引用返回值时&#xff0c;不生成值的副本。例如&#xff0c;下面的程序是有关引用返回的4种形式&#xff1a;//*********************//**   ch9_6.cpp  **//********************* #include <iostream.h> float tem…

mysql用binlog恢复数据_利用mysql的binlog恢复数据

MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个:* 数据回复* 主从数据库。用于slave端执行增删改&#xff0c;保持与master同步。1.开启binary log功能需要修改mysql的配置文件&#xff0c;本篇的实验环境是win7&#xff0c;配置…

python 怎么处理json_Python是怎样处理json模块的

首先&#xff0c;了解下什么是JSON&#xff1f;JSON&#xff1a;JavaScript Object Notation 【JavaScript 对象表示法】JSON 是一种轻量级的数据交换格式&#xff0c;完全独立于任何程序语言的文本格式。一般&#xff0c;后台应用程序将响应数据封装成JSON格式返回。JSON的基本…

UEditor1.2.6.0在.net环境下使用

UEditor1.2.6.0 1.百度百科词条 2.UEditor官方网站 【CKEditorCKFinder的配置实用&#xff0c;可查看博主另一篇文章】 第一次接触UEditor还是在2011年的下半年里&#xff0c;当时由于需要找一款富文本编辑器进行新闻的网站开发&#xff0c;当时UEditor异常较多&#xff0c;就将…

sql 删除数据_从零开始学SQL:是什么、如何安装、基本语法、表格(创建、删除、更新)、数据(插入、删除、更新)...

一、学习知识的黄金圈思维用黄金圈思维分析自己学习SQL&#xff0c;能增加自己的效率和坚持下去的动力。二、SQL基础知识1.数据库概念&#xff1a; database &#xff0c;按照数据结构来组织、存储和管理数据的仓库。2.关系数据库&#xff1a;多张表表之间的关系表&#xff1a;…

函数使用了堆栈的字节超过_在C语言中如何访问堆栈?

堆栈一般是用来保存变量之类的东西&#xff08;静态变量在内存中&#xff0c;虽然堆栈就是内存的一部分&#xff0c;但为了防止歧义&#xff0c;还是分成两部分来说&#xff09;&#xff0c;一般情况下没必要去故意读取堆栈的值&#xff0c;变量用变量名就可以直接访问&#xf…

怎么解决相位抵消_【录音教程】如何防止话筒拾音的声学相位抵消

设想一下你以单声道的模式为一个吉他歌手做扩声&#xff0c;一支人 声听起来比较古怪&#xff0c;有点“空”&#xff0c;同时有滤波器之类的效果声。为什么会这样&#xff1f;主唱话筒拾取歌手的演唱&#xff0c;同时拾取箱琴的话筒也串入了歌手的声音(见图1)。吉 他话筒离主唱…

string 找出所有数字 index_发现规律,解决整数转罗马数字

嗨&#xff0c;各位&#xff01;我们又准时见面了&#xff0c;即将迎来难得的周末时光&#xff0c;我们今天来一道相对简单的题目逻辑梳理的题目&#xff0c;原定的动态规划的常见题型我们放在周末进行更新。话不多说&#xff0c;我们先看题目&#xff1a; 01 . 题目罗马数字包…

ASP.NET MVC的路由

好久没写博文了&#xff0c;感觉最近好像少了点动力。唉&#xff01;这回就看看这个MVC的路由。 说这个路由机制其实不是MVC里面特有的&#xff0c;ASP.NET里面本身就有的&#xff0c;只不过在WebForm里面一般比较少用&#xff0c;而在MVC里就是把原本的路由扩展了。原本对不知…

java情书_Java情书已写好,就差妹子了!

我是Java程序员我用我的方式表达对你的爱&#xff01;我能抽象出整个世界...但是我却不能抽象出你...你肯定是一个单例&#xff0c;因为你是那样的独一无二...所以我的世界并不完整...我可以重载甚至覆盖这个世界里的任何一种方法...但是却不能覆盖对你的思念...也许命中注定了…

windows下手动配置ipv6地址

在XP,2003等早期版本中&#xff0c;ipv6地址在“网络连接”的属性配置里是无法手工配置的&#xff0c;只能使用netsh配置。配置方法如下&#xff1a;首先&#xff0c;安装IPV6协议&#xff0c;ipv6 install 第二步&#xff0c;查看当前使用的本地连接信息&#xff1a; 如上图&a…

java 幽灵引用_Java 幽灵引用的作用

原标题&#xff1a;Java 幽灵引用的作用来源&#xff1a;imzoer&#xff0c;blog.csdn.net/imzoer/article/details/8044900找实习的时候&#xff0c;面试大摩&#xff0c;就遇到了这个问题&#xff0c;当时真不该跟面试官交流这个内容的。垃圾收集过程中&#xff0c;对象的可触…

java assembly 打包_maven 使用assembly 进行打包的方法

1. pom 中添加assembly 插件要使用assembly 进项编译打包&#xff0c; 首先主要在pom 中的build中添加插件信息&#xff0c; 具体如图下所示&#xff1a;${project.artifactId}src/main/javasrc/main/resourcestrue**/*.xml**/*.properties${profile.dir}trueorg.apache.maven.…

rt5350 中断初始化

linux 下的中断初始化&#xff0c;实际就是对 irq_desc 这个结构体进行初始化&#xff0c;其中最关键莫过于 irq_flow_handler_t handle_irq 中断处理函数 struct irqaction *action 用户自己设置的处理函数链表&#xff0c;由hand…

VS2010安装异常中断后无法安装的解决方法(安装时发生严重错误)

最近&#xff0c;因为公司开发的需要&#xff0c;对开发环境进行全面的升级&#xff0c;在这其中也遇到了不少问题&#xff0c;在之后将陆续整理出来&#xff0c;以便以后查看。 之前开发环境&#xff1a;ArcGIS9.3&#xff0c;ArcEngine9.3&#xff0c;Oracle10g&#xff0c;A…

将5350 i2c clk设置为gpio 中断模式的方法

5350和我之前用的三星和全志的芯片在中断这块有点差别&#xff0c;三星和全志的都是有专门的外部中断管脚&#xff0c;并且每个中断管脚对应一个中断号&#xff0c;对管脚寄存器的配置即irq_desc里chip变量&#xff0c;都是bsp里自带的&#xff0c;我们只需要用request_irq来注…

代码大全 MSIL语言程序设计

.NET平台的编译器会将高级语言(C#,VB.NET,F#)编译成MSIL(微软中间语言)格式。熟悉MSIL语言&#xff0c;可以读懂一些加密程序混淆过的算法&#xff0c;这些算法几乎不能还原成高级语言&#xff0c;但是可以还原成MSIL语言。也可以知道一些高级语言之外的关于CLR的特性&#xff…

以太网交换机

以太网交换机是基于以太网传输数据的交换机&#xff0c;以太网采用共享总线型传输媒体方式的局域网。以太网交换机的结构是每个端口都直接与主机相连&#xff0c;并且一般都工作在全双工方式。交换机能同时连通许多对端口&#xff0c;使每一对相互通信的主机都能像独占通信媒体…