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

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")

数据分析——R语言中ggplot2用法(1)相关推荐

  1. r语言显示找不到read_html,R语言中read.table函数不常见的用法-文本中有#注释符号...

    自从开始学习R语言,read.table是较早接触到的函数,因为要读取数据,也因为最开始学习数据分析是用"制表分隔符的txt"文件比较多,xlsm在linux系统中又不太合适,所以 ...

  2. R语言中的apply函数用法

    刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言本身来 ...

  3. r语言中c函数错误,R语言中c()函数与paste()函数的区别说明

    c()函数:将括号中的元素连接起来,并不创建向量 paste()函数:连接括号中的元素 例如 c(1, 2:4),结果为1 2 3 4 paste(1, 2:4),结果为"1 2" ...

  4. R语言中if语句使用方法之超详细教程

    在R语言中,if属于一种分支结构,即根据某个条件执行相关的语句.R中的if语句与else配合主要有3种结构. 单个if语句 if(cond) {expr} 其它语句 即当括弧中的cond条件为TRUE ...

  5. r语言中paste函数_R中的paste()函数-简要指南

    r语言中paste函数 Using the paste() function in R will be straight and simple. In this tutorial let's see ...

  6. R计算两列数据的相关系数_使用R语言中的corrplot来绘制相关系数矩阵热图

    R语言也是目前常用的数据分析编程语言之一,目前经过使用者.科学家们的开发,其功能也比较强大.本文就使用R语言中的corrplot来绘制相关系数矩阵热图进行介绍. 下面以波士顿Boston的房价数据为例 ...

  7. R语言中的fitted() 和 predict()

    R语言中的fitted() 和predict() 总结来说,fitted(拟合)是在给定样本上做预测,而predict(预测)是在新的样本上做预测. 以前一篇中的数据为例,图片是根据高度(height ...

  8. R语言中dcast 和 melt的使用 简单易懂

    R语言中dcast 和 melt的使用 2. 例子 示例数据:set.seed(123) dat = data.frame(ID = paste0("ID_",1:10),y1 = ...

  9. 1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型

    决策树是根据若干输入变量的值构造出一个适合的模型,以此来预测输出变量的值,并用树形结构展示出来.决策树主要有两个类别:分类树和回归树.分类树主要针对离散的目标变量,回归树则针对连续的目标变量.R语言中 ...

最新文章

  1. Docker相关概念与安装(Docker-CE)
  2. 32命令模式(Command Pattern)
  3. MySQL线上优化_线上MySQL千万级大表,如何优化?
  4. 基于神经网络的文本分类(基于Pytorch实现)
  5. EF中创建、使用Oracle数据库的Sequence(序列)功能
  6. 目录:软件评测师教程
  7. 网页设计作业作品成品HTML5+CSS大作业——简单的程序员个人博客(7页) 大学个人博客网页制作教程 表格布局网页模板
  8. 朱有鹏嵌入式linux网盘,朱有鹏嵌入式单片机免费课程
  9. 【Unity3D插件】DoTween插件(二)
  10. 应届生拿到offer之后的流程_应届生雷区:拿到offer不想去了怎么办?小心登上HR黑名单!...
  11. 如何生成SSH key?
  12. 技术人从职场中脱颖而出的成长秘诀
  13. 如何启动Intel VT-x
  14. 神经系统图 基本结构图,大脑神经网络结构图片
  15. 工资倒挂,IT 行业薪资潜规则如何规避?
  16. xSSD: DSSD,FSSD,ESSD,MDSSD,fireSSD
  17. Unity 制作和绑定骨骼动画简要过程
  18. [cesium] | 视频融合 | 自定义视频投放
  19. 给程序员的10条中肯建议
  20. 阿里云产品推荐——云解析DNS

热门文章

  1. python中自然数e怎么表示_python e怎么表示
  2. 台式计算机usb接口无反应6,win7电脑usb接口没反应如何解决 电脑usb接口没反应解决方法...
  3. 2022-2028全球与中国嵌入式计算机市场现状及未来发展趋势
  4. Django Web 官方 中文文档 开发手册
  5. java web项目混淆
  6. 深度学习水果识别系统-python
  7. 微信小程序_16,组件的生命周期
  8. 网络安全定义和安全威胁
  9. 计算机cmos参数的设置,CMOS常见的设置方法
  10. SQL 查询当前时间,已经设置时区