R言语数据绘图学习(0x01)-装置ggplot2与测验
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图片保存