了解 plot() 函数在 R 中的使用 – 绘图基础

在這個教程中,讓我們首先通過了解在 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 中更改圖形外觀

plot() 函數在 R 中可以通過多種方式進行自定義,以創建更複雜和引人注目的圖形,我們將看到。

  1. 標記的形狀:默認情況下,圖形標記是小的空圓圈。這些也被稱為繪圖字符 – 由 pch 表示。您可以通過在 plot 函數中添加新的 pch 值來更改這些。Pch 值 0 到 25 是有效的,並在圖形上給出幾種不同的符號。 pch 0 是正方形,1 是圓形,3 是三角形,4 是十字等等。
  2. 標記點大小: 圖表的這一方面可以使用cex參數進行控制。如果要將標記設置為原始大小的50%,可以將cex參數設置為0.5;如果要將其設置為原始大小的150%,則設置為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相應的sin值。現在嘗試將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

使用plot()函數在R中為圖形添加更多信息

當圖形中有說明和信息時,圖形看起來更完整。這些包括圖表和軸的標題,圖例。有時甚至需要標記數據點。讓我們看看如何在R中添加這些到圖形中。

  1. 主標題是使用plot函數中的main選項添加的。字體、顏色和大小可以使用font.maincol.maincex.main進行自定義。
  2. 軸的標題使用xlab和ylab屬性提供。這些可以像上面一樣使用font.labcol.labcex.lab進行自定義。
  3. 您還可以使用text屬性在圖中添加一些額外的文本,指定要使用的文本和顯示的坐標。
  4. 使用text属性还可以用于标记数据点。在这种情况下,文本是标签的矢量,而不是字符串。
  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’的位置。Inset是指将图例框稍微移动到图的内部。生成的图现在有了图例。

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

第一條藍線是根據指定的斜率和截距構建的。接下來的三組水平和垂直線以虛線樣式繪製在指定的x和y值,如lty=2所述。

這涵蓋了R中繪圖函數的基礎。當與ggplot2等其他包結合使用時,R可以建立最具有代表性和動態的圖形,我們將在進一步的教程中看到。

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