R语言(12):绘图

12.1 创建图形

12.1.1 plot函数

plot(c(1,2,3),c(1,2,4))
plot(c(1,2,3),c(1,2,4),"b")
plot(c(-3,3),c(-1,5),"n",xlab = "x",ylab = "y")

12.1.2 添加线条:abline()函数

x <- c(1,2,3)
y <- c(1,3,8)
plot(x,y)
lmout <- lm(y~x)
abline(lmout) #添加一条直线
abline(lmout$coefficients)
abline(2,1)
lines(c(1.5,2.5),c(3,3)) #添加一条线段,端点为(1.5,3),(2.5,3)
lines(c(1.5,2.5),c(3,4),"l",lty = "dotted")#设定线条的类型
?par

12.1.3 设备窗口(掌握)

新建窗口和新建图形不是一个东西,新建的窗口只有一个

主要的步骤(1)新建设备窗口(2)切换设备窗口

windows() #在保持原有图形的基础上新建图形窗口
X11()
dev.new()
plot(x,y,"n")
lines(c(1.5,2.5),c(3,3),"l",lty = "dotted")
lines(c(1.5,2.5),c(3,4),"l",lty = "dashed")
dev.set(3) #切换图形窗口

12.1.4 在一张图中绘制两条密度曲线

一定要先新建再添加

e1 <- rbinom(100,120,0.55)
d1 <- density(e1,from= 0,to =100)
plot(d1,main= "",xlab = "")
e2 <- rnorm(100,60,10)
d2 <- density(e2,from= 0,to =100)
lines(d2,lty = "dashed")

坐标轴的范围是根据第一个来画的

12.1.6 添加点

e1 <- rbinom(100,120,0.55)
d1 <- density(e1,from= 0,to =100)
plot(d1,main= "",xlab = "")
e2 <- rnorm(100,60,10)
d2 <- density(e2,from= 0,to =100)
lines(d2,lty = "dashed")

12.1.8 添加文字:text()函数

text(2.5,4,"abc") #字符中心位于输入的坐标参数上
text(40,.02,"Exam1")
text(56,.05,"Exam2")

12.1.9 精确定位:locator()函数

hist(c(12,5,13,25,16))
locator(1)
text(locator(1),"nv= 75")

12.1.10 保存图形

#R语言中没有“撤销命令”!只能通过先保存再读取的方式恢复图形。img1 <- recordPlot()
text(locator(1),"nv= 74")
replayPlot(img1)

12.2 定制图形

12.2.3 添加多边形:polygon()

f <- function(x) return(1-exp(-x))
curve(f,0,2)
polygon(c(1.2,1.4,1.4,1.2),c(0,0,f(1.3),f(1.3)),col = "gray")
polygon(c(1,1.2,1.2,1),c(0,0,f(1.3),f(1.3)),density= 10)

12.2.5 绘制具有显示表达式的函数

g <- function(t){return((t^2 + 1)^0.5)}
x <- seq(0,5,length=5000)
y <- g(x)
plot(x,y,type= "l")
或
curve( (x^2 +1)^0.5+.5, 0, 5 , add=T) #如果add为真,则将曲线添加到当前工作图形设备中,若为假则新建一个图形设备
或
plot(g,0,5)

12.2.6 放大曲线的一部分

将曲线的一部分截取后进行放大绘制,并将其放在与原曲线的同一个图形中。#savexy : 包含了由crv()函数返回的x和y向量的列表
#x1, y1, x2, y2: 要放大的曲线的区域
#x3, y3, x4, y4: 要添加的矩形的坐标
inset <- function(savexy, x1,y1,x2,y2,x3,y3,x4,y4){
rect(x1,y1,x2,y2) #画矩形
rect(x3,y3,x4,y4) #画矩形
savex <- savexy$x; savey <- savexy$y
n <- length(savex)
xvalsinrange <- which(savex >= x1 & savex <= x2)
yvalsforthosex <- savey[xvalsinrange]
if (any(yvalsforthosex < y1|yvalsforthosex >y2)){
print("Y value outside first box"); return()}
x2mnx1 <- x2- x1; x4mnx3 <- x4- x3; y2mny1 <- y2- y1; y4mny3 <- y4- y3
plotpt <- function(i){ #进行坐标转换
newx <- x3 + ((savex[i]-x1)/x2mnx1)*x4mnx3; newy <- y3 + ((savey[i]-y1)/y2mny1)*y4mny3
return(c(newx,newy))}
newxy <- sapply(xvalsinrange,plotpt)
lines(newxy[1,],newxy[2,])}xyout <- crv(exp(-x)*sin(1/(x-1.5)),0.1,4,n=5001)
inset(xyout,1.3,-0.3,1.47,0.3,   2.5,-0.3,4,-0.1)

12.3 将图形保存到文件

dev.new()
pdf("d12.pdf") #创建并打开一个pdf文件
dev.list() #查询图形设备列表
dev.cur() #查询当前工作图形设备的编号

12.3.2 保存已显示的图形

dev.set(2)
xyout <- crv(exp(-x)*sin(1/(x-1.5)),0.1,4,n=5001)
inset(xyout,1.3,-0.3,1.47,0.3,   2.5,-0.3,4,-0.1)
dev.copy(which=3)#将当前设备中的图形复制到3号设备中
dev.set(3)
dev.off()#关闭图形设备以便查看

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

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

相关文章

MySQL万字超详细笔记❗❗❗

MySQL 官网&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/database-use.html 作用&#xff1a;管理逻辑上存在但物理上不存在的数据库和表等大数据环境中的静态资源。 它用于存储结果数据和其他小型数据&#xff0c;避免在大数据环境中存放。 要展示数据成果&#xff…

基于单片机设计的智慧农业大棚检测系统

一、设计目标 本项目基于单片机设计一个智慧农业大棚检测系统&#xff0c;以提供实时监测和管理大棚环境的关键参数。系统支持环境温度、湿度检测&#xff0c;光照强度检测&#xff0c;并能根据预设的阀值进行报警提示。为了实现数据的显示和管理&#xff0c;该系统还利用Qt开…

Linux--系统安全及应用

1.1账号安全控制 用户账号是计算机使用者的身份凭证或标识&#xff0c;每个要访问系统资源的人&#xff0c;必须凭借其用户账号才能进入计算机。在Linux系统中&#xff0c;提供了多种机制来确保用户账号的正当、安全使用。 1.系统账号清理 在Linux系统中&#xff0c;除了用户手…

苹果QQ群聊天记录怎么删除?收藏好这两个技巧!

无论我们使用什么手机&#xff0c;我们都可以在QQ上与好友进行交流和社交。然而&#xff0c;有时候我们可能需要删除一些不需要的聊天记录&#xff0c;特别是群聊记录&#xff0c;以此来扩大手机内存。那么&#xff0c;苹果手机的qq群聊天记录怎么删除呢&#xff1f;小编将为大…

【算法Hot100系列】下一个排列

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

系列十三、查询数据库中某个库、表、索引等所占空间的大小

一、information_schema数据库 1.1、概述 information_schema数据库是MySQL出厂默认带的一个数据库&#xff0c;不管我们是在Linux中安装MySQL还是在Windows中安装MySQL&#xff0c;安装好后都会有一个数据库information_schema&#xff0c;这个库中存放了其他库的所有信息。 …

【嵌入式】git工具基础命令学习笔记 | 嵌入式Linux

文章目录 前言一、git基础指令二、git分支管理2.1、一些基础命令2.2、时间回溯2.3、新建分支&#xff0c;删除分支&#xff0c;重命名分支 前言 参考&#xff1a;飞凌嵌入式ElfBoard ELF-1 软件学习手册 chatGPT 一、git基础指令 首先我们新建一个名叫git的文件夹&#xff0…

普中STM32-PZ6806L开发板(有点悲伤的故事)

简介 关于我使用 普中STM32-PZ6806L做了做了一些实验, 不小心输入12V&#xff0c;导致核心板等被烧坏, 为了利用电路和资源, 搭建了STM32F103CBT6并使用普中STM32-PZ6806L上面没有烧坏的模块的故事。 普中STM32-PZ6806L开发板 这块的STM32F103ZET6部分算是Closed了, 不准备换核…

共享WiFi项目怎么样,靠谱吗?业内专家为你解答

共享WiFi项目自问世以来&#xff0c;就备受关注&#xff0c;有人质疑它的可靠性&#xff0c;也有人对其充满信心。今天&#xff0c;我们就来聊聊共享WiFi项目怎么样&#xff0c;是否靠谱。 我们要明白共享WiFi项目是什么。共享WiFi项目是一种基于互联网的共享商业模式&#xf…

11.文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景&#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词&#xff0c;可能需要先科普一下关于文件系统的知识&#xff0c;但是这里我们并不浪费笔墨介绍这个概念&#xff0c;请大…

顺序表实现(下)(C语言)

几道相关例题,帮助大家更好理解顺序表. 文章目录 前言 一、顺序表二、创建顺序表并初始化三.删除非递减顺序表L中的重复元素四.在非递减顺序表中删除[s,t]之间的元素五.设计算法逆置顺序表L,并将序列L循环左移六.顺序表A和B的元素个数分别为m,n.A表升序排序,B表降序排序,两表中…

伺服电机:伺服电机基础知识

一、什么是伺服 伺服&#xff0c;英文Servo&#xff0c;来源于拉丁语Servus&#xff0c;意思是奴隶&#xff0c;奴隶的特点就是完全按照主任的指令去做事。伺服电机&#xff0c;也就是严格按照控制指令来运行的电机。利用伺服电机搭建起来的系统或者机构就叫伺服系统或者伺服机…