当前位置:首页 > 后端开发 > 正文内容

R言语数据绘图学习(0x01)-装置ggplot2与测验

邻居的猫1个月前 (12-09)后端开发971

0x01 装置与R根底

一向传闻数据剖析里R言语是比较‘正统’,何况久闻ggplot2这些R言语的数据剖析库台甫,想到往后数据剖析和收拾的需求,这儿开一个简略的系列学习一些R言语和ggplot2的绘图根底。自己学习的书本是Winston Chang大佬的《R Graphics Cookbook》,且稍有一点Python里的Plotnine绘图根底。但我算是R言语小白,所以整个系列也能够记载自己学习遇到的坑,供咱们参阅。

库装置

我运用的R版别为3.6.3,需求下载的库包含ggplot2,gcookbook和dplyr库。能够运用如下的装置指令:

install.packages("ggplo2")
install.packages("dplyr")
install.packages("gcookbook")

假如遇到了installation of package ‘ggplot2’ had non-zero exit status相似的问题,能够指定装置程序强制装置二进制文件[1],如

install.packages("ggplo2", type = "binary")

R言语数据处理根底

首要简略介绍数据输入常用的两种办法,一种是CSV数据,咱们能够选用函数read.csv(file, args)输入;另一种常用数据EXCEL数据能够运用read_excel(file)函数输入数据。

dplyr包(magrittr包)供给了一种运算符%>%,能够在R中完成相似接连函数调用的编程办法,以嵌套函数f,g,h为例:

h(g(f(x)))

# 等价于
x %>% 
  f() %>% 
  g() %>% 
  h()

这样的函数调用比较嵌套函数愈加直观,尤其是在多个接连的数据集处理场合。

根底绘图以及概念

散点图和完好流程

制作图片运用的数据集为mtcars:

mtcars %>% head()
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

在开端绘图之前,有一点根本的R言语根底设施需求预备。R言语画图需求有根底的画布,能够用dev.new()函数来敞开一个新的画布(假如是windows体系需求运用windows()函数)。

dev.new()
# windows() # windows体系运用

下面直接展现最简略的散点图制作代码:

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point()

上面的代码便是一个运用ggplot2绘图的最根本结构,ggplot函数是保存数据集和映射信息(aes)等根本信息的绘图主函数,也能够理解为存储一切信息的画布底层。第一个参数放入数据集,后续的映射都在此数据集上进行,本例中便是运用了mtcars中的wt列作为x,mpg列作为y值。ggplot2中的函数根本均是加法进行组合,所以这儿加上了geom_point函数组合进绘图。此刻geom_point函数经过ggplot函数能够得知其绘图需求用到的键信息(x, y)别离对应的数据值。代码运转成果如下:

制作完图后,能够挑选print(p)来检查图片并保存,或许运用ggplot2自带的函数ggsave来保存图片,根本的格局例如png,pdf等都有[2]。

ggsave(p, "p.png")

假如想要绘图的数据不属于同一个data frame,那么能够不指定ggplot函数的数据项,在aes映射中直接界说,如下所示:

ggplot(data=null, aes(x = mtcars$wt, y = mtcars$mpg))

其他根本绘图与根底

下面的代码展现了R言语制作线形图的根本函数geom_line,一起展现了ggplot2经过组合函数geom_line和geom_point来绘图的根本逻辑:

p <- ggplot(pressure, aes(x = temperature, y = pressure)) +
  geom_line() +
  geom_point()

关于柱形图,ggplot2的相关支撑比较多,这儿展现最根底的两种,一个是geom_bar函数:

p <- ggplot(mtcars, aes(x = factor(cyl))) +
  geom_bar()

这儿有一个新的函数factor,这个函数是将数据列变化为因子,体现在图上相似于将接连变量转化为了离散的变量。能够看到,上述的映射信息中不包含y值。这是由于geom_bar函数默许的运作方法count,也便是计算x的呈现次数并绘图,相当于geom_bar(stat="count"),其间stat选项是计算函数的意思。假如需求制作详细数值相似y值的柱形图就需求用到下一个函数了。
第二个柱形图的函数是geom_col函数:

p <- ggplot(BOD, aes(x = factor(Time), y = demand)) +
  geom_col()

其实geom_col的效果与geom_bar(stat="identity")是共同的,这样就能为所欲为的制作柱形图了。

下面的代码示例展现了制作和柱形图很像的直方图的事例:

p <- ggplot(mtcars, aes(x = mpg)) +
  geom_histogram(binwidth = 3)
直方图也是默许的频率计算,这儿稍微调整了参数binwidth来扩大每个直方的宽度。

下面的代码展现了怎么制作箱型图的比如:

p <- ggplot(ToothGrowth, aes(x = interaction(supp, dose), y = len)) +
  geom_boxplot()
上面除了根本代码还用到了interaction函数,用于组合变量,相似cross join的成果。

除开这些根本绘图,数学函数的制作也比较简略:

# 自界说函数
myfun <- function(xvar) {
  1 / (1 + exp(-xvar + 10))
}

p <- ggplot(data.frame(xdata = c(0, 20)), aes(x = xdata)) +
stat_function(fun = myfun, geom = "line")
上面的代码首要界说了一个简略的函数,然后将函数作为自界说计算函数stat_function的fun参数输入,并挑选绘图方法为line,这样就能够得到一条函数曲线。

总结

本节宗旨在于R言语ggplot2绘图的初探,了解根本的绘图形式。后续将会逐个打开学习库中的绘图细节,完善绘图质量。

参阅资料:

[1] 处理R包“had non-zero exit status”装置报错。
[2] ggplot2图片保存

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=232

分享给朋友:

“R言语数据绘图学习(0x01)-装置ggplot2与测验” 的相关文章

php向下取整,phpstudy官网下载

在PHP中,向下取整可以通过使用`floor`函数来实现。这个函数会返回小于或等于给定数值的最大整数。例如:```php```在这个例子中,`floor`返回5,因为它是最接近5.6且不大于5.6的整数。 PHP 向下取整函数详解在PHP编程中,向下取整是一个常见的操作,它可以帮助我们获取一个浮点数...

java和python,编程语言的选择与未来展望

1. 用途: Java:通常用于企业级应用、Android 应用开发、大型系统开发等。 Python:广泛用于数据分析、机器学习、Web 开发、自动化脚本等。2. 语法: Java:语法相对严格,需要明确声明变量类型,并且使用分号作为语句的结束符。 Python:语法简洁明了...

rust服务器

1. Rust Web 全栈开发 课程简介:这门课程涵盖了使用 Rust 编写 Web 服务器的各个方面,包括 TCP 和 HTTP 服务器的构建。它使用 Rust 标准库中的 `std::net` 模块来创建 TCP 服务器和客户端。 2. 多线程 Web 服务器 实现方法:通过为每个请求分配...

有关go的短语,go的短语归纳大全初中

有关go的短语,go的短语归纳大全初中

1. Go ahead 请继续,往前走2. Go for it 尽管去做,试试看3. Go with the flow 顺其自然,随波逐流4. Go the extra mile 额外努力,做得更多5. Go out on a limb 冒险尝试,承担风险6. Go back to squ...

php常量定义, 常量的定义

php常量定义, 常量的定义

在PHP中,常量是一个简单的标识符,它用于存储不会改变的数据。与变量不同,一旦常量被定义,就不能再被改变或重新定义。常量可以在脚本执行期间一直存在。 定义常量在PHP中,定义常量使用`define`函数。语法如下:```phpdefine;``` `CONSTANT_NAME`:必选参数,常量的名称...

php伪协议, 什么是PHP伪协议?

php伪协议, 什么是PHP伪协议?

1. file:// 用于访问本地文件系统。2. php:// 用于访问 PHP 的输入/输出流。3. ftp:// 用于访问 FTP 服务器。4. http:// 用于访问 HTTP 服务器。5. https:// 用于访问 HTTPS 服务器。6. zlib:// 用于访问压缩文件。...