ggplot批量画图
2023-04-18 14:27:55 时间
涉及到的知识点如下:
1.iris鸢尾花数据集的简单介绍
2.assign ()和get () 联合使用,存储及调用横/纵坐标的名称
3.for 循环中调用ggplot,实现批量绘图
一. iris鸢尾花数据集的简单介绍:
1. 首先,让我们大致看一下iris鸢尾花数据集中的内容
head(iris) #用head()语句调用一下iris数据集的前几行数据,得到结果如下:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
可以发现,iris数据集中有5个变量,前4个变量为数值型(numeric),最后一个为字符型 (character)。
2. 其次,我们定义一下iris数据集中的4个数值型变量的英文缩写以及单位 (不一定符合实际)
变量 | 缩写 | 单位 |
---|---|---|
Sepal.Length | SL | mm |
Sepal.Width | SW | mm |
Petal.Length | PL | mm |
Petal.Width | PW | mm |
二. assign()和get()联合使用,存储/调用横纵坐标名称:
aasign()就是给变量赋值。此语句的详细解释,见https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/assign
Labels<-NULL
for (j in 1:1:4){
Labels[j] <- paste("Labels", j, sep = "")
assign(Labels[j], NULL)
} #使用for循环,循环定义4个变量 - Labels1, Labels2, Labels3, Labels4
assign(Labels[1], expression(italic(SL)~"("*"mm"*")"))
assign(Labels[2], expression(italic(SW)~"("*"mm"*")"))
assign(Labels[3], expression(italic(PL)~"("*"mm"*")"))
assign(Labels[4], expression(italic(PW)~"("*"mm"*")")) #分别给4个变量赋值 - 即横坐标的名称以及单位
Labels1, Labels2, Labels3, Labels4的调用通过get()函数。嵌套print(),检验是否赋值正确
for (i in 1:1:4){
print(get(paste("Labels",i,sep="")))
} #使用for循环,循环调用 - Labels1, Labels2, Labels3, Labels4
三. for 循环中调用ggplot,实现批量绘图:
重申一下,本篇教程解决的问题是 -
以iris数据集中的前3个变量为自变量,第4个变量Petal.Width为因变量,用ggplot批量绘制散点图,并用简单线性回归拟合。
先加载程序需要的安装包
library(ggplot2)
for 循环中调用ggplot,实现批量绘图
windowsFonts(roman=windowsFont("Times New Roman")) #图中字体使用新罗马
options(scipen=200) #不使用科学计数法
for (i in 1:3){
p<-ggplot(data =iris, mapping = aes(x=iris[,i], y=iris[,4]))+
geom_point(alpha = 0.5,size = 8)+ #alpha控制点的透明度,可以辅助检验重合点
geom_smooth(size=3,method=lm,se=FALSE)+
xlab(get(paste("Labels",i,sep="")))+ #用get()函数分别调用前三个自变量(Labels1,Labels2,Labels3)的名称以及单位
ylab(get(paste("Labels",4,sep="")))+ #用get()函数调用第四个因变量(Labels4)的名称以及单位
theme_bw()+
theme(axis.text.x = element_text(size=30, face = "bold",family = "roman"))+
theme(axis.text.y = element_text(size=30, face = "bold",family = "roman"))+
theme(axis.title.x = element_text(angle = 00, hjust = 0.5, size=50,color="black",family = "roman"))+
theme(axis.title.y = element_text(angle = 90,vjust=0.5, hjust = 0.5, size=50, color="black",family = "roman"))
#存储批量生成的图片
setwd('C:/Users/zhang/Desktop/自媒体/简书/ggplot批量画图/iris')
ggsave(filename=paste(colnames(iris[i]),".png",sep=""),plot=p,width =17,height=10) #以自变量的名称为文件名
}
用Photoshop排了一下版(也可以直接用R排版,但是稍微有些许麻烦),得到散点图集如下:
Fig.1 Scatter plots to show the relations among iris variables. (a) PW vs. PL;
(b) PW vs. SL; (c) PW vs. SW
相关文章
- 大数据要牢记的5大经验教训
- 大数据的进击:从占领IT部门到争取业务人员的芳心
- 为什么我在 Linux 上不再使用 ls 命令
- 内核系统调用的实现和互斥机制
- 消息称微软6月24日发布全新Windows:十年来最重大变革
- 大数据分析师“钱途”无量
- AlmaLinux:CentOS替代系统已获得商业支持
- 备受好评的功能再改进!教你打开Edge隐藏功能
- 这也能出Bug?微软承认Windows 10存在问题:重要文件会被损坏
- 推动安全浏览:微软为Edge浏览器引入自动HTTPS切换功能
- 大数据时代 企业须打好信息资源整合攻坚战
- 20 个最重要的 DevOps 面试题
- Linux 终端复用神器 Tmux 使用详解,看完可以回家躺平了~
- 超越安卓?今晚揭晓 鸿蒙发布会的十大预测
- 从大数据谎言中区分实际需求
- 什么是 HTTP/3,它为什么重要?
- 能否与安卓、iOS抗衡?鸿蒙OS+华为P40第一时间上手体验
- 面对众多质疑,Google 为 Chrome 浏览器添加 FLoC 广告追踪开关
- 谷歌 Chrome 浏览器推出“隐私沙盒”试验功能,用于阻止第三方 Cookie 跟踪
- Dotnet创建Linux下的Service应用