了解R中的plot()函数–图形绘制基础

时间:2020-02-23 14:43:53  来源:igfitidea点击:

在本教程中,首先让我们首先了解使用R中的plot()函数的基础。
R语言以其精美的图形而著称,它具有丰富的函数集,可以构建和格式化任何种类的图形以及plot()功能家族之一,可以帮助我们构建这些家族。

R中的plot()函数不是单个定义的函数,而是一系列相关函数的占位符。
确切的函数调用将取决于所使用的参数。
最简单的说,plot()函数只是简单地绘制两个向量。

plot(c(1,2,3,4,5),c(1,4,9,16,25))

这给出了y = x ^ 2的简单图。

使用R中的plot()函数更改图形外观

可以通过多种方式自定义R中的plot()函数,以创建更复杂且引人注目的图。

  • 标记的形状:默认情况下,绘图标记是小的空圆圈。
    这些也称为绘图字符-用pch表示。
    您可以通过在绘图功能中添加新的pch值来更改它们。
    Pch值0到25是有效的,并在图形上给出几个不同的符号。
    Pch 0表示正方形,1表示圆形,3表示三角形,4表示十字,依此类推。

  • 绘图标记的大小:可以使用cex参数控制图形的这一方面。
    如果希望将标记缩小50%,可以将cex参数设置为0.5,如果希望将标记增大50%,则可以将cex参数设置为1.5。

  • 绘图标记的颜色:可以为符号分配一种或者多种颜色。
    可以从R在" colors()"函数下提供的列表中选择这些颜色。

  • 用线连接点:很多时候,必须用不同种类的线连接显示的点。
    可以使用plot函数的type属性来完成。
    设置为" p"的type属性仅表示点,而" l"仅表示线。
    同样,值" b"和" o"分别用于连接点和覆盖点的线。
    要获得类似于显示的直方图,可以使用" h"选项,而将" s"用作步进选项。

  • 改变线条:线条类型可以通过lty参数指定(范围为0到6),线条宽度可以使用lwd参数设置。

现在,让我们尝试使用到目前为止所学的内容来构建一些图形。

我们将从生成正弦波图开始。
令x为从-pi到pi的值的序列向量,间隔为0.1,并且y包含x的相应正弦值。
现在尝试将y与x作图。

x=seq(-pi,pi,0.1)
y=sin(x)
plot(x,y)

正弦波

现在让我们尝试更改符号和颜色。

plot(x,y,pch=c(4,5,6),col=c('red','blue','violet','green'))

现在,我们使编译器可以从3种不同的符号和4种不同的颜色中进行选择,以标记图形。
让我们看看结果如何。

多彩正弦波

R还允许使用par()函数将多个图形组合为一个图像,以方便我们查看。
我们只需要在调用图形中的plot函数之前设置空间。

#Set a plotting window with one row and two columns.
par(mfrow=c(1,2))
plot(x,y,type='l')
plot(x,y,pch=c(4,5,6),col=c('red','blue','violet','green'))

R中的组合图

下面显示了一些使用上述各种选项的图形。

#Set space for 2 rows and 3 columns.
par(mfrow=c(2,3))

#Plot out the graphs using various options.
plot(x,cos(x),col=c('blue','orange'),type='o',pch=19,lwd=2,cex=1.5)

plot(x,x*2,col='red',type='l')

plot(x,x^2/3+4.2, col='violet',type='o',lwd=2,lty=1)

plot(c(1,3,5,7,9,11),c(2,7,5,10,8,10),type='o',lty=3,col='pink',lwd=4)

plot(x<-seq(1,10,0.5),50*x/(x+2),col=c('green','dark green'),type='h')

plot(x,log(x),col='orange',type='s')

生成的图形如下所示。

R中的多个图

在R中使用plot()函数向图添加更多信息

当有注释和说明信息的图形看起来更完整。
其中包括图表标题和坐标轴,图例。
有时甚至需要标记数据点。
让我们看看如何将它们添加到R中的图形中。

  • 主标题是使用plot函数中的main选项添加的。
    可以分别使用font.main,col.main和cex.main来定制字体,颜色和大小。

  • 使用xlab和ylab属性提供了轴的标题。
    可以使用上述的font.lab,col.lab和cex.lab进行自定义。

  • 您还可以使用text属性在绘图内添加一些其他文本,指定要使用的文本和要显示的坐标。

  • 文本属性也可以用于标记数据点。
    在这种情况下,文本是标签的向量,而不是字符串。

  • 可以使用R的legend()函数将图例添加到图形中。
    图例输入要解释的坐标,文本和符号。

让我们看看说明这些的例子。

#Displaying the title with color
plot(c(1,3,5,7,9,11),c(2,7,5,10,8,10),type='o',lty=3, col='pink',lwd=4,main="This is a graph",col.main='blue')

标题图

#Same graph with xlabel and ylabel added.

> plot(c(1,3,5,7,9,11),c(2,7,5,10,8,10),type='o',lt=3,col='pink',lwd=4,main="This is a graph",col.main='blue',xlab="Time",ylab="Performance")

让我们使用文本属性将标签添加到图形中的每个数据点。

labelset <-c('one','three','five','seven','nine','eleven')
x1<- c(1,3,5,7,9,11)
y1 <- c(2,7,5,10,8,10)
plot(x1,y1,type='o',lty=3,col='pink',lwd=4,main="This is a graph",col.main='blue',xlab="Time",ylab="Performance")
text(x1+0.5,y1,labelset,col='red')

最后,让我们使用legend()函数将图例添加到上述图形中。

> legend('topleft',inset=0.05,"Performace",lty=3,col='pink',lwd=4)

可以通过x和y坐标或者" topleft"或者" bottomright"之类的位置来指定位置。
插图是将图例框稍微移到图形内部。
生成的图形现在具有图例。

图例

叠加图

R还允许两个图显示在彼此的顶部,而不是为每个图创建一个新窗口。
这是通过为第二个图形而不是plot()调用lines()函数来完成的。
在执行指标比较或者不同值集之间时,这些功能最为有用。
让我们来看一个例子。

x=seq(2,10,0.1)
y1=x^2
y2=x^3
plot(x,y1,type='l',col='red')
lines(x,y2,col='green')
legend('bottomright',inset=0.05,c("Squares","Cubes"),lty=1,col=c("red","green"),title="Graph type")

在图上添加线

可以使用简单的" abline()"函数将直线添加到现有绘图中。
abline()函数采用a,b,h和v这四个参数。
变量a和b表示斜率和截距。
H代表水平线的y点,v代表垂直线的x点。

让我们看一个例子来阐明这一点。
在为正方形和立方体构建以上图形之后,尝试执行这三个语句。

abline(a=4,b=5,col='blue')
abline(h=c(4,6,8),col="dark green",lty=2)
abline(v=c(4,6,8),col="dark green",lty=2)

第一条蓝线是使用指定的斜率和截距建立的。
接下来的三条水平线和垂直线以lty = 2提到的虚线样式指定的x和y值绘制。