小白学R的第一天——关于作图

这是我第一次在CSDN上发表博客,以记录自学R语言的一点一滴。

关于作图

晚上有一位朋友让我拜托做一幅图,大致是关于土壤深度与PH以及碱化度的函数关系,给的是几组数据,做出折线图。从文献上看如下图所示。
在这里插入图片描述
P.S. 由于未给数据,以下所有数据都是自己编的,完全无实用价值。并且博主本人也不是学习土壤这方面的专业,有些简单的问题可能略可笑,不喜勿喷。
自己第一次自学R语言,也是边翻书边解决。一开始以为是简单的在一副折线图上再画上另外一条直线即可,于是用了函数lines(),代码如下:

rm(list=ls(all=TRUE))
x<-c(5,10,15,20,25,30)
y<-c(9,9.5,10,9,9,8.5)
z<-c(8,8.5,9,8,8,8.5)
par(mar=c(5,4,4,8)+0.1)
plot(x,y,type="b",pch=19,col="black",yaxt="n",ann=FALSE,lty=1,cex=2.2,lwd=2,ylim=c(7,14))
lines(x,z,type="b",pch=1,col="black",lty=1,cex=2.2,lwd=2,ylim=c(30,50))
axis(2,col.axis="black",las=2)
axis(4,col.axis="black",las=2)
mtext("ESP",side=4,line=3,cex.lab=1,las=0,col="black")
title("土壤剖面的PH和碱化度",xlab="深度",ylab="PH");

在这里插入图片描述由于对ESP的知识不是特别了解并且没有注意文献中ESP的取值,看着文献中的图模拟画了一个类似的折线图,后面发给朋友看了以后朋友说ESP的范围在0到80,文献中大致是30到50,后面将ESP的数值进行修改后发现PH和ESP的数值相差太大,要求作图是PH这边取值范围是[7,14],ESP取值范围是[0,80],反应过来如果用lines()函数可能两条折线无法同时在一张图内显示出来,于是后面考虑par(new=T)函数,即在旧的折线图上继续作图,保留原来的折线,并且修改了ESP的取值(也是自己编的),代码如下:

rm(list=ls(all=TRUE))
x<-c(5,10,15,20,25,30)
y<-c(9,9.5,10,9,9,8.5)
z<-c(35,36,37,38,35,34)
par(mar=c(5,4,4,8)+0.1)
plot(x,y,type="b",pch=19,col="black",yaxt="n",ann=FALSE,lty=1,cex=2.2,lwd=2,ylim=c(7,14))
axis(2,col.axis="black",las=2,seq(7,14,1))
par(new=T)
plot(x,z,type="b",pch=1,col="black",lty=1,cex=2.2,lwd=2,yaxt="n",ylim=c(0,80),ann=FALSE)
axis(4,col.axis="black",las=2,seq(0,80,20))
mtext("ESP",side=4,line=3,cex.lab=1,las=0,col="black")
title("土壤剖面的PH和碱化度",xlab="深度",ylab="PH")

在这里插入图片描述
大家可以看到这就是改进之后的效果,和文献上的图大致就是扭转了90度的样子。


第二天,我朋友拿着图去问老师,老师希望能按文献上的样子做而不是扭转90度,后面才想明白,意思是把整个坐标轴看成是一块土壤,最上面是地表,往下挖观察土壤深度和ESP之间的直观关系。大致就是把坐标轴重新定义一下即可。这里遇到一个小麻烦,需要将Y轴的坐标从上倒下0增长到100,作为学数学出生的博主认为违反了坐标轴的概念,但转念一想其实就是坐标系旋转一下即可,也就是ylim=c(0,100),改成ylim=c(100,0)。

rm(list=ls(all=TRUE))
x<-c(5,10,15,20,25,30)
y<-c(7,8,9,12,11,14)
z<-c(10,20,40,50,75,80)
plot(y,x,type="b",pch=19,col="black",xaxt="n",yaxt="n",ann=FALSE,lty=1,cex=2.2,lwd=2,ylim=c(100,0),xlim=c(7,14))
axis(2,col.axis="black",las=2,seq(0,100,15))
axis(3,col.axis="black",las=0,seq(7,14,1))
par(new=T)
plot(z,x,type="b",pch=1,col="black",lty=1,cex=2.2,lwd=2,xlim=c(0,80),ylim=c(100,0),xaxt="n",yaxt="n",ann=FALSE)
axis(1,col.axis="black",las=0,seq(0,80,15))
mtext("PH",side=3,line=3,cex.lab=1,las=0,col="black")
title(xlab="ESP",ylab="深度")

在这里插入图片描述
基本上和文献中的图类似了。

感谢你那么漂亮或者那么帅气能来看我的博客~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值