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()#关闭图形设备以便查看

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

飞塔FortiGate-1000C设备引进助力易天构建网络安全新防线

在当今数字化浪潮的推动下&#xff0c;企业对网络安全的需求日益迫切。为了应对不断升级的网络威胁&#xff0c;给客户提供最为优质的产品&#xff0c;易天引进了最新兼容性测试设备飞塔FortiGate-1000C&#xff0c;为光模块产品交付提供了更强劲的性能保障。 FortiGate-1000C是…

还不了解 Dockerfile 的同学不是好测试人

前言&#xff1a;近年来 Docker 非常火&#xff0c;想要玩好 Docker 的话 Dockerfile 是绕不开的&#xff0c;这就好比想要玩好 Linux 服务器绕不开 shell 道理是一样的。 今天我们就来聊一聊 Dockerfile 怎么写&#xff0c;那些指令到底是什么意思。 一、先来看一个简单的 D…

消息中间件

一、 消息中间件的介绍 消息中间件属于分布式系统中的子系统&#xff0c;关注数据的发送和接收&#xff0c;利用高效、可靠的异步消息传递机制&#xff0c;对分布式系统中的各个子系统进行集成。 1.1 为什么使用消息中间件 异步 解耦 缓冲能力 伸缩性 提高系统扩展性1.2 消息…

C++11新特性(也称c++2.0)

目录 1.输出C版本&#xff1a;cout << __cplusplus << endl; 2.Uniform Initialization(一致性初始化) 3.initializer_list&#xff08;形参&#xff09; 4.explicit 5.for循环的新用法 6.default和delete 7.Alias Template&#xff08;模板化名&#xff09…

Linux ssh 实现远程免密登录

一、背景 我搭建了一个 zookeeper 集群&#xff0c;写了一个 shell 脚本来控制集群的启动和关闭&#xff0c;但是我发现每次我执行 shell 脚本的时候&#xff0c;都需要我输入各个服务器的密码才可以运行&#xff0c;感觉很麻烦。shell 脚本里面连接其他服务器用的就是 ssh 的方…

HarmonOS 日期选择组件(DatePicker)

本文 我们一起来看基础组件中的 DatePicker 这就是 日程开发中的日期组件 他可以创建一个日期的范围 并创建一个日期的滑动选择器 这里 我们先写一个组件的骨架 Entry Component struct Index {build() {Row() {Column() {}.width(100%)}.height(100%)} }然后 我们先在Column组…

Redis:原理速成+项目实战——Redis实战5(互斥锁、逻辑过期解决缓存击穿问题)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战4&#xff08;解决Redis缓存穿透、雪崩、击穿&#xff09; &#x1f4da;订阅专…

想学习云计算么?教你如何免费白嫖微软和AWS的云资源一年

在这个数字化飞速发展的时代&#xff0c;云计算已成为IT行业的未来趋势。作为一名渴望进步的IT专业人员&#xff0c;掌握云计算不仅意味着技能的提升&#xff0c;更是升职加薪、拓宽职业道路的重要跳板。这里教你如何免费利用微软Azure和亚马逊AWS的云资源&#xff0c;为期一年…

oracle11范围表空间实例

1.表分区&#xff1a;范围分区&#xff0c;散列分区&#xff0c;列表分区&#xff0c;组合分区&#xff0c;inetrval分区 范围分区&#xff1a;商品零售表&#xff0c;按照销售日期所在的季度创建4个分区 --先建立表空间&#xff1a;临时表空间是不可以存放数据的&#xff0c;…

Python——数据类型转换

# 将数字类型转换成字符串 num_str str(111) print(type(num_str), num_str) \# 将浮点类型转换成字符串 float_str str(12.34) print(type(float_str), float_str) # 将字符串转变成数字 num int("234") print(type(num)) # 将字符串转变成浮点型 num2 float(&q…

Java学习笔记-day05-响应式编程初探-自定义实现Reactive Streams规范

最近在学响应式编程&#xff0c;这里先记录下&#xff0c;响应式编程的一些基础内容 1.名词解释 Reactive Streams、Reactor、WebFlux以及响应式编程之间存在密切的关系&#xff0c;它们共同构成了在Java生态系统中处理异步和响应式编程的一系列工具和框架。 Reactive Streams…

12.8-1.8

2023.12.8 redis容器 docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf redis.conf不存在&#xff0c;需先在宿主机创建该目录下文件&#xff0c…

知识点整理[(GraphGeo)RELATED WORK]

2 RELATED WORK 2.1 IP Geolocation 问题一:IP定位预测方法之一:Data mining-based methods 回答: 依赖于在公开的资源中挖掘位置线索来对目标IP(target IP)进行地理定位。其中一些数据分析了来自与IP相关的数据库,如WHOIS数据库和DNS的数据。 (1)例如,Moore等…

Transformer架构的局限已凸显,被取代还有多久?

江山代有才人出&#xff0c;各领风骚数百年。这句话无论是放在古往今来的人类身上&#xff0c;还是放在当今人工智能领域的大模型之上&#xff0c;都是最贴切不过的。无论是一个时代的伟人&#xff0c;还是统治一个领域的技术&#xff0c;最终都会有新的挑战者将其替代。Transf…

2024-01-09 Android.mk 根据c文件名插入特定的宏定义,我这里用于定义log LOG_TAG 标签

一、在Android的构建系统中&#xff0c;使用Android.mk构建脚本可以根据特定需求来定义宏。如果你想根据C文件的名称来插入特定的宏定义&#xff0c;可以使用条件语句检查文件名&#xff0c;并相应地设置宏。 在Android的构建系统中&#xff0c;使用Android.mk构建脚本可以根据…

解决uni-app小程序获取路由及路由参数

代码: this.id = this.$route.query.id;错误信息: 解决方案: // 获取query对象// #ifdef H5this.id = this.$route

《MLCC电容失效模式揭秘:机械、热、电裂纹分析及预防》

Q&#xff1a;MLCC电容是什么结构的呢&#xff1f; A&#xff1a;多层陶瓷电容器是由印好电极&#xff08;内电极&#xff09;的陶瓷介质膜片以错位的方式叠合起来&#xff0c;经过一次性高温烧结形成陶瓷芯片&#xff0c;再在芯片的两端封上金属层&#xff08;外电极&#xf…

IPv6路由协议---IPv6动态路由(OSPFv3-3)

OSPFv3使用Link-local地址 OSPFv3是运行在IPv6上的路由协议,同样使用链路本地地址来维持邻居,同步LSA数据库。除Vlink外的所有OSPFv3接口都使用链路本地地址作为源地址及下一跳来发送OSPFv3报文,带来的好处: 不需要配置IPv6全局地址,就可以得到OSPFv3拓扑,实现拓扑与地址…

HarmonyOS应用开发者基础认证考试

判断题 1.Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 正确(True) 2.所有使用Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。 错误(False) 3.每调用一次router.pushUrl()方法,…

SAM-Track online / offline配置

segment anything model&#xff08;SAM&#xff09;是Meta于2023年4月5日发布的分割基础模型。SAM 允许分割任何对象而无需微调。 可以在这里尝试SAM模型的效果。 分割效果这么好&#xff0c;都忍不住想用SAM来做场景的语义分割&#xff0c;realtime与否先放在一边&#xff0c…