在R中理解plot()函数 – 绘图基础

在这个教程中,让我们首先开始了解在R中使用plot()函数的基础知识。R语言以其美丽的图形和丰富的函数集而闻名,可以构建和格式化任何类型的图形,而plot()函数家族就是其中之一,它帮助我们构建这些图形。

在R中,plot()函数并不是一个单一定义的函数,而是一组相关函数的占位符。调用的确切函数将取决于使用的参数。简单来说,plot()函数只是将两个向量相对比。

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

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

Square plot in R

使用plot()函数在R中改变图形外观

在R中,plot()函数可以通过多种方式定制,以创建更复杂和引人注目的图形,我们将会看到。

  1. 标记的形状:默认情况下,plot标记是小的、空的圆圈。这些也被称为图形字符 – 由pch表示。您可以通过在plot函数中添加新的pch值来更改这些标记。Pch值从0到25都是有效的,并在图形上给出了几个不同的符号。Pch 0表示正方形,1表示圆形,3表示三角形,4表示十字,依此类推。
  2. 图标标记的大小:图表的这个方面可以使用cex参数来控制。如果您希望标记变小50%,可以将cex参数设置为0.5;如果您希望它们变大50%,则设置为1.5。
  3. 图标标记的颜色:符号可以被分配一个或多个颜色。这些颜色可以从R提供的列表中选择,该列表位于colors()函数下。
  4. 连接点与线:许多时候,需要使用不同类型的线连接显示的点。这可以通过绘图函数的type属性来实现。将type属性设置为’p’表示仅点,’l’表示仅线。类似地,值’b’和’o’用于连接点和叠加点。要获得直方图显示,使用’h’选项,而’s’用于步骤选项。
  5. 变化的线:线型可以由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)
Sine wave

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

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

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

Colorful Sinewave

R also allows combining multiple graphs into a single image for our viewing convenience using the par() function. We only need to set the space before calling the plot function in our graph.

#设置一个具有一行两列的绘图窗口。
par(mfrow=c(1,2))
plot(x,y,type='l')
plot(x,y,pch=c(4,5,6),col=c('red','blue','violet','green'))
Combining Plots In R

A few more graphs using various options from above are illustrated below.

#为2行3列设置空间。
par(mfrow=c(2,3))

#使用各种选项绘制图形。
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')

生成的图表如下所示。

Multiple Plots In R

使用R中的plot()函数为图表添加更多信息

当图表中有解释它们的注释和信息时,图表看起来更完整。这些包括图表和坐标轴的标题,图例。有时甚至需要标记数据点。让我们看看如何在R中添加这些内容。

  1. 主标题是使用plot函数中的main选项添加的。字体、颜色和大小可以使用font.maincol.maincex.main进行自定义。
  2. 使用xlab和ylab属性提供坐标轴的标题。这些可以像上面一样使用font.labcol.labcex.lab进行自定义。
  3. 您还可以使用text属性在图表内部添加一些额外的文本,指定要使用的文本和要显示的坐标。
  4. 文本属性还可以用于标记数据点。在这种情况下,文本是标签向量,而不是字符串。
  5. 图例可以使用 R 的 legend() 函数添加到图表中。图例的输入包括坐标、文本和要解释的符号。

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

#显示带颜色的标题
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')
Graph With A Title
#添加了 xlabel 和 ylabel 的相同图表。

> 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")
Graph With Title And Labels

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

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')
Graph With Data Labels

最后,让我们使用 legend() 函数为上述图表添加图例。

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

位置可以通过 x 和 y 坐标指定,也可以使用类似 ‘topleft’ 或 ‘bottomright’ 的位置。插入是指将图例框稍微移动到图表的内部。结果图现在有一个图例。

Graph With Legend

叠加图表

R also allows two graphs to be displayed on top of each other instead of creating a new window for every graph. This is done by calling a lines() function for the second graph rather than plot() again. These are most useful when performing comparisons of metrics or among different sets of values. Let us look at an example.

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")
Overlaid Graph With Legend

向绘图添加线条

直线可以使用简单的 abline() 函数添加到现有的图中。abline() 函数接受 4 个参数,分别是 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)
Graph With Lines

第一条蓝线是用指定的斜率和截距构建的。接下来的三组水平和垂直线以虚线样式绘制,在lty=2中指定了样式。

这涵盖了 R 中绘图功能的基础知识。当与 ggplot2 等其他包结合使用时,R 可以构建出最具呈现力和动态性的图形,我们将在后续教程中看到。

Source:
https://www.digitalocean.com/community/tutorials/plot-function-in-r