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.mzph.cn/news/606711.shtml

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

相关文章

基于SpringBoot的乡村养老服务管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的乡村养老服务管理系统,…

算法28:力扣64题,最小路径和------------样本模型

题目&#xff1a; 给定一个二维数组matrix&#xff0c;一个人必须从左上角出发&#xff0c;最后到达右下角 。沿途只可以向下或者向右走&#xff0c;沿途的数字都累加就是距离累加和 * 返回累加和最小值 思路&#xff1a; 1. 既然是给定二维数组matrix&#xff0c;那么二维数…

寒假前端第一次作业

1、用户注册&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用户注册</title> …

C++ 类型转换

一、类型转换 C语言中的类型转换比较松散&#xff0c;C新增4个类型转换运算符&#xff0c;更加严格的显示类型转换&#xff0c;使转换的效率更加规范 1、static_cast static_cast&#xff0c;用于仅在编译时检查的强制转换。 如果编译器检测到你尝试在完全不兼容的类型之间强制…

C++中的返回值优化(RVO)

一、命名返回值优化&#xff08;NRVO&#xff09; 是Visual C2005及之后版本支持的优化。 具体来说&#xff0c;就是一个函数的返回值如果是一个对象。那么&#xff0c;正常的返回语句的执行过程是&#xff0c;把这个对象从当前函数的局部作用域&#xff0c;或者叫当前函数的…

视频AI智剪方法:快速批量处理视频,批量剪辑视频的操作

随着科技的飞速发展&#xff0c;视频内容已是获取信息和娱乐的主要方式之一。对于视频创作者和内容生产者来说&#xff0c;如何快速、高效地处理和剪辑大量视频已成为一项重要的需求。现在借助AI技术的不断发展&#xff0c;可以更加智能、高效的处理视频。下面来看云炫AI智剪如…

VS2022 | 显示Unreal Engine日志

VS2022 | 显示Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志

【debug】为什么ansible中使用command出错

碎碎念 在使用ansible执行command的时候&#xff0c;遇到执行会出错的command 比如执行source打算读取环境变量的时候 错误提示为&#xff1a; 没有那个文件或目录:source 一开始以为是错误提示有问题&#xff0c;一直在testrc的路径上检查&#xff0c;但是同样一行命令使用…

一次因线程池使用不当造成生产事故OOM

美好的一天从bug结束 某日当我点开熟悉的界面&#xff0c;一个又一个请求失败的提示赫然出现在屏幕上&#xff0c;不会是昨晚上线的代码有问题吧&#xff1f; 吓得我急忙按F12查看了响应——"exception":"java.lang.OutOfMemoryError","message"…

212.【2023年华为OD机试真题(C卷)】堆内存申请(排序和贪心算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-堆内存申请二.解题思路三.题解代码Python题解代…

院士专家齐聚 京彩未来联合重点研究院创建数字空间联合实验室

1月6日&#xff0c;京彩未来与北京大学数字中国研究院华南分院暨广东省数字广东研究院共同创建的“数字空间共同体联合室验室”正式挂牌运营。 著名经济学家管清友博士、北京大学数字中国研究院华南分院暨广东省数字广东研究院常务副院长李鹰教授&#xff0c;广东省数字广东研…

大数据 Hive - 实现SQL执行

文章目录 MapReduce实现SQL的原理Hive的架构Hive如何实现join操作小结 MapReduce的出现大大简化了大数据编程的难度&#xff0c;使得大数据计算不再是高不可攀的技术圣殿&#xff0c;普通工程师也能使用MapReduce开发大数据程序。 但是对于经常需要进行大数据计算的人&#xff…

蒙特卡洛算法

通过随机数获得结果的算法。 当一个问题无法通过数学推导&#xff0c;计算机无法在有限时间求解时候。 就需要考虑蒙特卡洛方法了。 当无法求得精确解时候&#xff0c;进行随机抽样&#xff0c;根据统计试验求近似解。 可行域过大&#xff0c;没有通用方法求出精确解。 主…

【设计模式】访问者模式

一起学习设计模式 目录 前言 一、概述 二、结构 三、案例实现 四、优缺点 五、使用场景 六、扩展 总结 前言 【设计模式】访问者模式——行为型模式。 一、概述 定义&#xff1a; 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构…

荷兰公司注册优势 注册荷兰公司所需条件 荷兰公司年审

注册荷兰公司优势 1、税收优势&#xff1a;荷兰的税收体系相对较为灵活和有利。一系列的税收协定&#xff0c;可以帮助企业避免双重征税。 2、企业灵活 性&#xff1a;荷兰的公司法律相对灵活&#xff0c;允许企业以不同的形式进行注册&#xff0c;如有限责任公司&#xff08…

linux安装codeserver实现云端开发

先看图 下载安装包 https://github.com/coder/code-server/releases 找到code-server-版本号-linux-amd64.tar.gz&#xff0c;我这里是code-server-4.16.1-linux-amd64.tar.gz 1、使用acrm用户登录目标服务器 2、切换root用户&#xff0c;创建 vscode 用户&#xff0c;并设…

STM32MP157D-DK1 STM32CubeID使用与M核开发

STM32MP157具有A7内核核M4内核&#xff0c;前面介绍的一些文章&#xff0c;都是在A7内核上进行的&#xff0c;本篇来介绍M4内核的开发&#xff0c;以及开发时要用到的STM32 CubeIDE软件的使用。 1 STM32 CubeIDE创建LED工程 STM32CubeIDE是一体式多操作系统开发工具&#xff…

【Python】dbf批量转为excel(非arcpy和arcpy转法)

现在我有一些dbf文件,需要将其转为excel格式,利用python进行处理,主要有两类方法,python 3.x环境下转,或是在python 2.7环境下转。在gdf库中的dbf貌似只能用arcpy转法。 一、非arcpy转法 多个dbf合并到一个excel不同sheet中 import pandas as pd from dbfread import D…

云消息队列 Kafka 版生态谈第一期:无代码转储能力介绍

作者&#xff1a;娜米 云消息队列 Kafka 版为什么需要做无代码转储 云消息队列 Kafka 版本身是一个分布式流处理平台&#xff0c;具有高吞吐量、低延迟和可扩展性等特性。它被广泛应用于实时数据处理和流式数据传输的场景。然而&#xff0c;为了将云消息队列 Kafka 版与其他数…

linux日志管理

一.inode与block 访问文件的流程&#xff1a; 根据文件夹的文件名和inode号&#xff0c;找到对应的inode表&#xff0c;再根据inode表的指针找到磁盘上的真实数据 tips&#xff1a;我磁盘空间还剩很多&#xff0c;但是无法建立文件&#xff1f; 因为inode号被分完了 解决方法&a…