R语言绘制三维图
- 格式:doc
- 大小:13.50 KB
- 文档页数:1
R语言绘图画图例子 R Graph Cookbook例子 [html] view plain copy print ? span style =font-size:18px; / span [html] view plain copy print ? span style = font-size:18px; From: / span a href = span style = fon画图例子R Graph Cookbook例子[html] view plaincopyprint? <span style="font-size:18px;"></span>[html] view plaincopyprint?<span style="font-size:18px;">From:</span><a href=""><span style="font-size:18px;"></span></a>今天突然找到一本专门教授R语言绘图的书,R Graph Cookbook,发现还不错。
当初喜欢上R语言就是因为它绘图特别好看。
下面把这本书的内容,经过我学习后,翻译并贴上了吧。
(我水平还不够,原创还不行呀,不过学习就是先模仿再创新的过程)之所以要贴到博客上来,我是怕有一天我也忘记了,好直接到我博客上来搜索一下,同时也方便了别人。
下面说的是用R语言绘制散点图。
其实绘制散点图,用plot(x,y)直接就可以了,不过这样绘制出来的散点图太简单了,不能达到使用的要求,所以要详细得设置一些参数,才能让图形更加的漂亮。
还是直接上代码吧,我已经做好注释的了。
1.<span style="font-size:18px;">plot(cars$dist~cars$speed,#y~x,cars是R自带的数据2.main="Relationship between car distance & speed",#标题3.xlab = "Speed(miles per hour)",#x轴标题4.ylab = "Distance travelled (miles)",#Y轴标题5.xlim = c(0,30),#设置x轴的取值区间为0到306.ylim = c(0,140),#设置y轴的取值区间为0到1407.xaxs = "i",#这里是设置x轴的风格,暂时没看明白有多大区别8.yaxs = "i",9.col = "red",#设置颜色10.pch = 19)#pch指代点的形状,用数字表示,可查看帮助文档11.#如果要保存图片怎么办呢?我觉得最简单的方法就是使用RStudio这个IDE,极其得好,可惜很多人都不知道。
R语言的基础绘图技术高水平绘图函数x <- 1:100 #生成1-100的向量y <- 100 + x*5 #100是截距,5是斜率#windows是生成一个窗口更,plot是绘图windows(300,200);plot(y) #散点图windows(300,200);plot(y,type="l") #直线# 生成100个正态分布随机数并绘图x <- rnorm(100,10,5) #均值为10,标准差为5plot(x)# 绘制1000个正态分布随机数的频数直方图x <- rnorm(1000,30,10)hist(x)# 使用核密度估计函数density(),在直方图上绘制密度曲线# hist()函数必须设置freq参数为F才能显示密度曲线x <- rnorm(1000,30,10)hist(x,freq=F)lines(density(x),col="blue")box() #给图加一个方框,看起来完整一些# 茎叶图很直观的表现出数据的分布情况x <- rnorm(100,5,1)stem(x)# 绘制10个正态分布随机数的条形图x <- rnorm(10,30,10);barplot(x)box() # 在当前图上加个方框# 绘制饼图x <-1:5;pie(x,col=rainbow(5)) #rainbow,向量有5个值,不会自己选颜色,系统自动分配box()# 绘制箱线图# 中间黑线为中位数位置;上下框线为上下四分位数位置;上下触须为1.5倍四分位数间距;如果有孤立点表示异常值x <-rnorm(10,10,3);boxplot(x)# 绘制向日葵图data(iris)sunflowerplot(iris[,3:4])# 绘制矩阵或数据框的二元图data(iris)pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",pch= 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])# 绘制QQ图# 如果向量为正态分布则数据点基本在一条直线上x <- rnorm(500,10,5);qqnorm(x)# 根据指定函数绘制指定范围的曲线图curve(sin, -2*pi, 2*pi, xname = "t")低水平绘图函数在高水平绘图函数绘制的图形上做补充和修饰# 生成50个正态分布随机数并绘图x <- 1:50y <- rnorm(50,10,5)#横坐标#纵坐标#type="n"表示开始不绘图#横坐标的名称#纵坐标的名称#横坐标的范围#纵坐标的范围#main表示主名称#sub表示副标题plot(x,y,type="n",xlab="数据索引",ylab="随机数点",xlim=c(1,50),ylim=c(-20,20),main="实验图",sub="随机数绘图") #高水平绘图points(x,y,col="blue") #低水平绘图,绘制所有的点lines(x,y,col="red") #将所有的点连成线text(5,max(y),"随机数据点") # 在指定坐标位置放置文本mtext("横轴下方文字",side=1) # 横轴、纵轴上放置文字mtext("纵轴左方文字",side=2)mtext("横轴上方文字",side=3)mtext("纵轴右方文字",side=4)segments(10,10,50,-10) # 根据起点、终点坐标绘制线段#15表示箭头的角度arrows(10,-10,40,20,angle=15,code=1) # 绘制带箭头线段,可以设置箭头角度,有几个箭头(1起点箭头、2终点箭头,3双箭头)abline(-20,.5) # 在图上绘制直线,第一个参数为截距,第二个参数为斜率abline(h=0,col="red") # 在图上绘制水平线或垂直线,可以标示临界位置,很好用的功能legend(0,max(y),"随机点连线") #图例# 坐标定位模式获得鼠标点击位置的坐标x <- 1:50y <- rnorm(50,10,5)plot(x,y,type="n",xlab="数据索引",ylab="随机数点",xlim=c(1,50),ylim=c(-20,20),main="实验图")print(locator(3,type="p")) # 图像进入定位模式,第一个参数决定获取几个点的坐标信息,第二个参数决定绘图方式rect(5,5,20,20) # 在已经成功绘制的图形内部绘制一个长方形polygon(c(20,10,30,40,45),c(-10,0,15,4,-10)) # 在高级图形内部绘制多边形setwd("D:/rstudiodir") #设置当前工作目录# 生成一个绘图窗口在其中绘制图形后用savePlot()函数保存windows()plot(1:10)rect(1, 5, 3, 7, col="blue")savePlot("test01",type="jpg",device=dev.cur(),restoreConsole=TRUE)# 直接在jpeg设备上绘制图形,完成后使用dev.off()关闭设备,存盘退出jpeg(file="myplot.jpeg")plot(1:10)rect(1, 5, 3, 7, col="blue")dev.off()。
r语言求解相空间重构相空间重构是一种非线性时间序列分析方法,它可以从高维相空间中重构出系统的动力学行为。
这种方法在许多领域都有广泛应用,如气象学、经济学、生物学等。
下面介绍如何使用R语言进行相空间重构。
1. 导入所需的R包```rlibrary(tseriesChaos)library(nonlinearTseries)```2. 生成测试数据```r# 生成Lorenz吸引子数据lorenz <- lorenz.map(r=28, sigma=10, b=8/3, dt=0.01, x0=c(-8,8,27), n=5000)```3. 相空间重构```r# 使用时延坐标嵌入法进行相空间重构embed_dim <- embed_dim(lorenz[,1], max.embedding=20)# 最优嵌入维度为3m <- embed_dim$m # 嵌入维度# 计算时延tau <- embed_tau(lorenz[,1], m=m, lag.max=20)# 最优时延为18delay <- tau$tau # 时延# 相空间重构reconstructed <- embed(lorenz[,1], m=m, delay=delay)```4. 可视化相空间```r# 绘制三维相空间plot(reconstructed[,1], reconstructed[,2], reconstructed[,3],type="l", xlab="x(t)", ylab="x(t+tau)", zlab="x(t+2*tau)")```以上代码展示了如何使用R语言对Lorenz吸引子进行相空间重构。
首先导入所需的R包,然后生成测试数据。
接着使用时延坐标嵌入法确定最优嵌入维度和时延,并进行相空间重构。
基于R系统的三线图程序包开发刘永生中国地质环境监测院,北京100081,对于水文地质工作者来说,对地下水化学成分进行分析是一项重要的研究工作。
其中K+、Na+、Ca2+、Mg2+、Cl-、SO42-、HCO3-、CO32-等八大离子是地下水化学类型分类的基础,派珀(A.M.Piper)三线图解简单直观的展现了八大离子空间关系,是分析水文地球化学数据的一种很常用的方法。
虽然已有许多软件已经能够很好的画出三线图,但这些软件大部分为商用软件,且价格不菲,也有许多学者也尝试自己编写三线图程序,但这些软件多为图形方式,虽然应用较为简单,但在批量处理数据方面比较繁琐。
本文作者基于免费软件R系统,开发了一个三线图程序包(cigempiper_0.1),可集成到R系统中。
该程序包功能较为齐全,可拓展性强,可以在下一步工作中集成更多的功能,该程序包可适用于批量处理水文地球化学数据。
最后,本文利用河北省保定地区水文地球化学数据进行了计算和图形输出,效果显著。
一、R系统介绍R系统移植于统计计算和图形显示S语言(Becker et al,1988)。
S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。
它的丰富的数据类型(向量、数组、列表、对象等)特别有利于实现新的统计算法,具有交互式运行方式及强大的图形及交互图形功能。
目前S语言的实现版本主要是S-PLUS。
它基于S语言,并由MathSoft公司的统计科学部进一步完善。
作为统计学家及一般研究人员的通用方法工具箱,S-PLUS强调演示图形、探索性数据分析、统计方法、开发新统计工具的计算方法,以及可扩展性,但S-plus售价较贵。
R系统(R Development Core Team,2008)是S语言的另一种实现,是一个提供统计计算和图形显示环境的自由软件。
最早(1995年)是由Auckland大学统计系的Robert Gentleman和Ross Ihaka开始编制,目前由R核心开发小组维护,他们完全自愿、工作努力负责,并将全球优秀的统计应用软件打包免费提供给用户。
R语⾔与数据分析之⼆:绘图图形展⽰是最⾼效且形象的数据描述⼿段,因此巧妙的图像展⽰是⾼质量数据分析报告的必备内容,因此强⼤的图形展⽰功能也是统计分析软件的必备功能。
R语⾔提供了强⼤的吐⾎展⽰功能。
今天我由简单到复杂分别和⼩伙伴们分享如何⽤R语⾔画出各位想要的图形。
⾸先罗列下所有可选图形:1、直⽅图(hist());2、散点图(plot());3、柱状图(barplot());4、饼图(pie());5、箱线图(boxplot());6、星相图(stars());7、脸谱图(faces());8、茎叶图(stem());9、QQ图(qqnorm());10、地图包maps、mapdata、geosphere为了⽅便地进⾏图形展⽰,我们创建⼀个数据场景,假设我们需要统计学⽣的3门课的考试情况。
我们分别⽣成学号、⾼等数学(80到100的均匀分布)、线性代数(均值80,标准差为7的正态分布)和运筹学(均值83,标准差18的正态分布)三科成绩。
相应的语句为:Num=seq(102001,102100)X1=round(runif(100,min=80,max=100))X2=round(rnorm(100,mean=80,sd=7))X3=round(rnorm(100,mean=83,sd=18))基本统计--单指标考虑到所有的成绩不能超过100分,因此需要将随机⽣成的成绩中⾼于100分的改为100分并将最终修正后的所有成绩连同学号存⼊数据框。
X2[which(X2>100)]=100X3[which(X3>100)]=100X=data.frame(Num,X1,X2,X3)分别画出⾼等数学成绩的直⽅图、⾼等数学和线性代数的相关关系的散点图,运筹学成绩的柱状图和饼图,来观看各科成绩的分布情况。
相应语句如下:hist(X$X1)plot(X1,X2)barplot(table(X$X1))pie(table(X$X1))基本统计--多指标接着我们将三科成绩⽤两种箱线图画出来,箱线图可以更加清楚的解释数据的分布情况,和数据的集中区域。
绘图实验三答案1、画出函数32()21f x x x x =+++在区间[1,10]上的图形,曲线颜色设置为红色。
x<-seq(1,10,by=0.1)y=x^3+2*x^2+x+1plot(x,y,"l",col="red")2468100200400600800100x y2、将窗口分割成2×1的窗格,在第一个、第二个窗口中分别绘制出正弦、余弦函数的图像,并画出x 轴。
x<-seq(0,2*pi,by=pi/20)y1<-sin(x)y2<-cos(x)par(mfrow=c(2,1))plot(x,y1,"l",xlim=c(0,7),ylim=c(-2,2))lines(c(0,3*pi),c(0,0))plot(x,y2,"l",xlim=c(0,7),ylim=c(-2,2))lines(c(0,3*pi),c(0,0))01234567-202x y101234567-202x y23、在同一张图上画出函数2122,y x y x ==的曲线并利用legend 函数对曲线加标注“2122,y x y x == ”,并加上标题 “ 22x x 和的曲线”。
x<-seq(0,10,by=0.5)y1=2*xy2=x^2plot(x,y1,"o",main="2*x 和x^2 的曲线",pch=8)lines(x,y2,"o",pch=24,col="red")legend("topright",legend=c("2*x","x^2"),col=c("black","red"),pch=c(8,24),lty=1)024681051015202*x 和x^2 的曲线x y 12*xx^24、将屏幕分割为四块,并分别画出y=sin(x);z=cos(x);a=sin(x)*cos(x);b=sin(x)/cos(x)。
Matlab中的三维图形绘制技巧由于Matlab的强大数据分析和可视化功能,它被广泛应用于许多领域,包括物理学、生物学和工程学。
其中,三维图形绘制是Matlab中一项重要而有趣的技巧。
本文将介绍几种用Matlab绘制三维图形的技巧,并探讨一些常见问题的解决方法。
一、基础知识在开始之前,我们需要了解一些Matlab中三维图形绘制的基础知识。
Matlab 提供了许多函数来绘制三维图形,包括plot3、surf和mesh等函数。
其中,plot3函数用于绘制三维曲线,surf函数用于绘制三维曲面,而mesh函数则可以绘制网格曲面。
此外,Matlab还提供了一些辅助函数来设置坐标轴、标题和标签等。
二、绘制三维曲线首先,我们来学习如何使用plot3函数绘制三维曲线。
该函数接受三个向量作为输入,分别表示曲线上点的x、y和z坐标。
以绘制一个螺旋线为例,我们可以定义一个角度向量theta和对应的x、y和z坐标向量。
然后,使用plot3函数绘制曲线。
```matlabtheta = linspace(0, 10*pi, 1000);x = cos(theta);y = sin(theta);z = linspace(0, 10, 1000);plot3(x, y, z);```通过调整theta的范围和分辨率,我们可以绘制出不同形状和密度的螺旋线。
此外,我们还可以使用颜色、线型和标记等选项来自定义曲线的外观。
三、绘制三维曲面接下来,我们将介绍如何使用surf函数绘制三维曲面。
与绘制曲线类似,surf 函数也接受三个坐标向量作为输入,并将其解释为曲面上的点。
此外,我们还需要定义一个与坐标向量相同维度的矩阵来表示曲面的高度。
以下代码演示了如何绘制一个带有Z轴高度信息的平面曲面。
```matlabx = linspace(-5, 5, 100);y = linspace(-5, 5, 100);[X, Y] = meshgrid(x, y);Z = peaks(X, Y);surf(X, Y, Z);```在此示例中,我们使用meshgrid函数生成X和Y坐标矩阵,并使用peaks函数生成与X和Y相对应的高度矩阵Z。
R语言绘制三维散点图的预测曲面[plain] view plain copy1.library(rgl)2.#预测脚本3.predictgrid<-function(model,xvar,yvar,zvar,res=16,type=NULL){4.xrange<-range(model$model[[xvar]])5.yrange<-range(model$model[[yvar]])6.newdata<-expand.grid(x=seq(xrange[1],xrange[2],length.out=res),7.y=seq(yrange[1],yrange[2],length.out=res))s(newdata)<-c(xvar,yvar)9.newdata[[zvar]]<-predict(model,newdata=newdata,type=type)10.newdata11.}12.#x,y,z转为列表13.df2mat<-function(p,xvar=NULL,yvar=NULL,zvar=NULL){14.if(is.null(xvar)) xvar<-names(p)[1]15.if(is.null(yvar)) yvar<-names(p)[2]16.if(is.null(zvar)) zvar<-names(p)[3]17.x<-unique(p[[xvar]])18.y<-unique(p[[yvar]])19.z<-matrix(p[[zvar]],nrow=length(y),ncol=length(x))20.m<-list(x,y,z)s(m)<-c(xvar,yvar,zvar)22.m23.}24.#交错出现两个向量元素25.interleave<-function(v1,v2) as.vector(rbind(v1,v2))26.27.m<-mtcars28.mod<-lm(mpg~wt+disp+wt:disp,data=m)29.m$pred_mpg<-predict(mod)30.mpgrid_df<-predictgrid(mod,'wt','disp','mpg')31.mpgrid_list<-df2mat(mpgrid_df)32.33.plot3d(mtcars$wt,mtcars$disp,mtcars$mpg,xlab='',yla b='',zlab='',axes=FALSE,size=.5,type='s',lit=FALSE)34.35.spheres3d(m$wt,m$disp,m$pred_mpg,alpha=0.4,type ='s',size=0.5,lit=FALSE)36.37.segments3d(interleave(m$wt, m$wt),38.interleave(m$disp, m$disp),39.interleave(m$mpg, m$pred_mpg),40.alpha=0.4,col='red'41.)42.#预测曲面43.surface3d(mpgrid_list$wt,mpgrid_list$disp,mpgrid_list $mpg,alpha=.4,front='lines',back='lines')44.#其他设置45.rgl.bbox(color='grey50',emission='grey50',xlen=0,ylen =0,zlen=0)46.rgl.material(color='black')47.axes3d(edges=c('x--','y+-','z--'), cex=.75)48.mtext3d('Society',edge='x--',line=2)49.mtext3d('Pollution',edge='y+-',line=3)50.mtext3d('Economy',edge='z--',line=3)代码结果图:案例来自书籍:R语言数据可视化。
下面是用R语言绘制三维散点图的方法,并举出两个示例。
1)安装
在R语言提供的console里面输入如下命令安装scatterplot3d:
source("")
biocLite("scatterplot3d")
2)调用
通过如下的命令加载scatterplot3d库
library("scatterplot3d")
3)示例
示例1:编写R脚本,文件名为,中添加如下脚本
# example 1
library("scatterplot3d")
z <- seq(-10, 10,
x <- cos(z)
y <- sin(z)
scatterplot3d(x, y, z, =TRUE, ="blue",
="lightblue", main="scatterplot3d - 1", pch=20)
在R的console运行如下命令,其中"D:\\R\\"为脚本文件的绝对目录:
source("D:\\R\\")
效果图:
示例2:编写R脚本,文件名为,中添加如下脚本
# Example 2:
library("scatterplot3d")
= matrix(runif(25), nrow = 5)
dimnames = list(LETTERS[1:5], letters[11:15])
= (columns = c(col),rows = c(row), value = c)
scatterplot3d, type = "h", lwd = 5, pch = " ", = colnames,
= rownames,color = grey(25:1 / 40), main = "3D barplot")
在R的console运行如下命令,其中"D:\\R\\"为脚本文件的绝对目录:
source("D:\\R\\")
效果图:
附:R语言的比较好学习资料:掌握点R语言
内容来自。