数据分析——R语言中ggplot2用法(1)

备忘录地址(用来查询一些参数)

https://www.maths.usyd.edu.au/u/UG/SM/STAT3022/r/current/Misc/data-visualization-2.1.pdf

R语言软件参数 R3.6.0

安装包、导入包

install.package('ggplot')
library(ggplot)

首先加载数据集

这里用的是示例数据,R自带的一个包提供的数据集。
dslabs包是R中的一个数据科学工具包,它提供了一系列数据集和函数,用于帮助研究人员探索新的数据科学概念,进行数据分析和机器学习模型构建。

library(dslabs)
data(murders)

定义ggplot对象

ggplot初始化图形

管道符(|>, %>%, %>%, %$% 和%<>%),|>是R4.1版本开始的自带的管道符,将左侧的输出结果传递给右侧命令,因为这里用的是3.6版本的所以就用%>%管道符,测试发现|>不能被识别。

ggplot(data = murders)##或者murders |> ggplot()

也可以把ggplot图赋值给一个对象p

p <- ggplot(data = murders)

然后你就会得到一个初始化的白板,后续的步骤就是在这个白板上添加组件,组件有三个主要要素:数据、图、映射。数据是要分析的数据,图是选用什么图,比如直方图、散点图,映射指的是x轴和y轴是哪个变量。
在这里插入图片描述

在ggplot上添加图层

方式一:一般形式DATA %>% ggplot() + LAYER 1 + LAYER 2 + … + LAYER N

murders %>% ggplot()+geom_point(aes(x = population/10^6, y = total))#添加散点图,添加x轴population,y轴total

运行结果

几何函数名称遵循以下模式:geom_X其中 X 是几何的名称,这里散点图是point,要用其他图的话可以去备忘录上的geoms上看。

方式二,在定义的对象p上叠加图层

p + geom_point(aes(x = population/10^6, y = total))#p是前面定义过的含有数据的初始图

继续添加图层

在散点图基础上添加一个文本组件

p + geom_point(aes(population/10^6, total)) +geom_text(aes(population/10^6, total, label = abb))#Label = abb 指的是标签 (label) 的缩写

运行结果

对文本组件进行参数调整

#size 控制点的大小, nudge_x 文本稍微向右或向左移动
p + geom_point(aes(population/10^6, total), size = 3) +geom_text(aes(population/10^6, total, label = abb), nudge_x = 1.5)

可以看到文本向右移动了 ,点也变大了
结果

全局与局部映射aes()

先查看下ggplot参数

args(ggplot)

在这里插入图片描述

全局映射:在定义对象时将坐标映射定义

p <- murders %>% ggplot(aes(population/10^6, total, label = abb))

然后就可以直接使用了,不用在每个组件中定义x轴,y轴

p + geom_point(size = 3) + geom_text(nudge_x = 1.5)

得到
结果

在全局映射中进行局部映射

想要单独让某个组件有自己的坐标

p + geom_point(size = 3) +  geom_text(aes(x = 10, y = 800, label = "Hello there!"))

在这里插入图片描述
可以看到在(x=10,y=800)的坐标位置有个文本

控制坐标轴刻度

scale_x_continuous函数可以用来在指定的坐标轴上对数据进行缩放。

p + geom_point(size = 3) +  geom_text(nudge_x = 0.05) + scale_x_continuous(trans = "log10") +scale_y_continuous(trans = "log10") #用于将坐标轴的连续数据变换为以10为底的对数尺度

在这里插入图片描述

标签和标题

使用xlab,ylab和ggtitle

p + geom_point(size = 3) +  geom_text(nudge_x = 0.05) + scale_x_log10() +scale_y_log10() +xlab("Populations in millions (log scale)") + ylab("Total number of murders (log scale)") +ggtitle("US Gun Murders in 2010")

结果

给类别添加颜色

p <-  murders %>% ggplot(aes(population/10^6, total, label = abb)) +   geom_text(nudge_x = 0.05) + scale_x_log10() +scale_y_log10() +xlab("Populations in millions (log scale)") + ylab("Total number of murders (log scale)") +ggtitle("US Gun Murders in 2010")
p + geom_point(size = 3, color ="green")#在散点图里添加color

在这里插入图片描述
可以选择按什么分类颜色,比如这个数据里有的region,使用aes

p + geom_point(aes(col=region))

在这里插入图片描述
上面的图例可以通过show.legend = FALSE删除

添加一条直线

这里代表全国的平均谋杀率 y=rx
geom_abline是画线的,log10是因为之前坐标轴是转换到log10标准的
geom_abline(intercept, slope, linetype, color, size)
参数说明:intercept:y轴的截距 slope:斜率linetype:线条样式color:线条颜色size:线条宽度
pull()函数是R语言中用于提取对象的函数。它的作用是从已有的数据框、向量或列表中提取特定行或列的数据。

#计算斜率
r <- murders %>%  summarize(rate = sum(total) /  sum(population) * 10^6) %>%  pull(rate)
p <- p + geom_abline(intercept = log10(r), lty = 2, color = "darkgrey") +geom_point(aes(col=region), size = 3)  
p

在这里插入图片描述

附加软件包: ggthemes,ggrepel

ggthemes是R语言中的一个用于设置ggplot2图表主题的包。
Ggrepel旨在帮助解决图中文本标签重叠的问题。
ds_theme_set()是dslabs包中的一个函数,它可以自动设置默认主题。

install.packages('ggthemes')
library(ggthemes)
p + theme_economist()

结果

完整的一个ggplot图代码

library(ggthemes)
library(ggrepel)r <- murders %>%summarize(rate = sum(total) /  sum(population) * 10^6) %>%pull(rate)murders %>% ggplot(aes(population/10^6, total, label = abb)) +   geom_abline(intercept = log10(r), lty = 2, color = "darkgrey") +geom_point(aes(col=region), size = 3) +geom_text_repel() + scale_x_log10() +scale_y_log10() +xlab("Populations in millions (log scale)") + ylab("Total number of murders (log scale)") +ggtitle("US Gun Murders in 2010") + scale_color_discrete(name = "Region") +theme_economist()

描述分布

条形图

murders %>% ggplot(aes(region)) + geom_bar()

在这里插入图片描述
不希望geom_bar计数,而是只绘制一个由比例变量提供高度的条形图。为此,提供x(类别)和y(值),并使用stat=“identity”选项。
先计算region每一类的数量然后传入下一行代码中

tab <- murders %>% count(region) %>% mutate(proportion = n/sum(n))
tab %>% ggplot(aes(region, proportion)) + geom_bar(stat = "identity")

在这里插入图片描述

直方图

用的是范例数据里的heights的数据,geom_histogram()函数,添加了标题,x轴标签

library(dslabs)
data(heights)
x <- heights$height[heights$sex=="Male"]
heights %>% filter(sex == "Female") %>%  ggplot(aes(height)) +geom_histogram(binwidth = 1, fill = "blue", col = "black") +xlab("Female heights in inches") + ggtitle("Histogram")

在这里插入图片描述

密度图

adjust参数控制密度图的平滑度,取值范围为0~1,默认值为1,值越大,则平滑度越高。

heights %>% filter(sex == "Female") %>% ggplot(aes(height)) +geom_density(fill="blue",adjust = 2)

在这里插入图片描述

箱线图

heights %>% ggplot(aes(sex,height)) +geom_boxplot()

在这里插入图片描述

使用qplot快速绘图

快速绘制一个向量值的直方图、两个向量值的散点图或使用分类向量和数值向量的箱线图
qplot(x, y, data, geom, color, fill, size, shape, alpha, etc.)
其中,x和y参数用于指定绘图变量,data参数指定数据集,geom参数用于指定绘图类型,color、fill、size、shape、alpha等参数则可用于控制图表的外观。

两个向量的值绘制散点图

data(murders)
x <- log10(murders$population)
y <- murders$total
qplot(x, y)

在这里插入图片描述

直方图:1个对象

x <- heights %>% filter(sex=="Male") %>% pull(height)
qplot(x)

在这里插入图片描述

提供一个因子和一个数值向量画的图

heights %>% qplot(sex, height,data=.)

在这里插入图片描述
##箱线图

heights %>% qplot(sex, height, data = ., geom = "boxplot")

在这里插入图片描述

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

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

相关文章

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

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

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;“中信证券年度业绩交流会”会议以网…