国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[R語(yǔ)言]手把手教你如何繪圖(萬字)

這篇具有很好參考價(jià)值的文章主要介紹了[R語(yǔ)言]手把手教你如何繪圖(萬字)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

[R語(yǔ)言]手把手教你如何繪圖(萬字)

目錄

概況

常用高級(jí)圖形

條形圖

csv文件導(dǎo)入

csv文件導(dǎo)出

R語(yǔ)言sep函數(shù)

seq函數(shù)

with函數(shù)

直方圖和密度估計(jì)圖

盒型圖

boxplot()

正態(tài)QQ圖

散點(diǎn)圖

pairs()散點(diǎn)矩陣圖

曲線圖

curve()

三維圖

動(dòng)態(tài)三維圖

低級(jí)圖形函數(shù)

abline()

lines()

legand()增加圖例

axis()坐標(biāo)軸

text()給圖內(nèi)區(qū)域添加文字

locator()和identify()

圖形的參數(shù)

例子:用圖形參數(shù)解決barplot圖形橫坐標(biāo)值過寬

圖形元素控制

坐標(biāo)軸與坐標(biāo)刻度

圖形邊空

一頁(yè)多圖

圖形輸出

PDF輸出

PNG輸出

包含多種中文字體的圖形

其他圖形

相關(guān)系數(shù)圖

萬字帶你入門繪圖

概況

R語(yǔ)言的前身是S語(yǔ)言, S語(yǔ)言的設(shè)計(jì)目的就是交互式數(shù)據(jù)分析、繪圖。 所以繪圖是R的重要功能。

R有最初的基本繪圖, 這是從S語(yǔ)言繼承過來的, 還有一些功能更易用、更強(qiáng)大的繪圖系統(tǒng), 如lattice、ggplot2。 基本繪圖使用簡(jiǎn)單, 靈活性強(qiáng), 但是為了做出滿意的圖形需要比較多的調(diào)整。 這里先講解R語(yǔ)言的基本繪圖功能。

R的基本繪圖功能有兩類圖形函數(shù): 高級(jí)圖形函數(shù), 直接針對(duì)某一繪圖任務(wù)作出完整圖形; 低級(jí)圖形函數(shù),在已有圖形上添加內(nèi)容。 具備有限的與圖形交互的能力(函數(shù)locator 和identify)。

繪圖命令首先可以分成三個(gè)基本的類

  • 高級(jí)繪圖命令在圖形設(shè)備上產(chǎn)生新的圖區(qū),它可能包括坐標(biāo)軸、標(biāo)簽、標(biāo)題等。plot(),hist()…
  • 低級(jí)畫圖命令在已存在的圖上添加更多的圖形元素,如額外點(diǎn)、線和標(biāo)簽。 lines(),points(),legend(),title(),axis()…

[R語(yǔ)言]手把手教你如何繪圖(萬字)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

常用高級(jí)圖形

條形圖

這里會(huì)大量碰到barplot函數(shù)的運(yùn)用,建議大家去這個(gè)博主的博客里看看,很詳細(xì).??barplot詳解

我們?cè)?code>d.cancer這個(gè)數(shù)據(jù)框存儲(chǔ)了肺癌病人放療的一些數(shù)據(jù),這些數(shù)據(jù)可以從以下文件讀入

cancer.csv

id age sex type v0 v1

1 70 F 腺癌 26.51 2.91

2 70 F 腺癌 135.48 35.08

3 69 F 腺癌 209.74 74.44

4 68 M 腺癌 61 34.97

5 67 M 鱗癌 237.75 128.34

6 75 F 腺癌 330.24 112.34

7 52 M 鱗癌 104.9 32.1

8 71 M 鱗癌 85.15 29.15

9 68 M 鱗癌 101.65 22.15

10 79 M 鱗癌 65.54 21.94

11 55 M 腺癌 125.31 12.33

12 54 M 鱗癌 224.36 99.44

13 55 F 腺癌 12.93 2.3

14 75 M 腺癌 40.21 23.96

15 61 F 腺癌 12.58 7.39

16 76 M 鱗癌 231.04 112.58

17 65 M 鱗癌 172.13 91.62

18 66 M 鱗癌 39.26 13.95

19 F 腺癌 32.91 9.45

20 63 F 腺癌 161 122.45

21 67 M 鱗癌 105.26 68.35

22 51 M 鱗癌 13.25 5.25

23 49 M 鱗癌 18.7 3.34

24 49 M 鱗癌 60.23 50.36

25 F 鱗癌 223 25.59

26 M 鱗癌 145.7 35.36

27 M 鱗癌 138.44 11.3

28 M 鱗癌 83.71 76.45

29 M 鱗癌 74.48 23.66

30 F 腺癌 42.7 5.97

31 M 鱗癌 142.48 68.46

32 F 鱗癌 46.97 27.32

33 F 鱗癌 170.63 74.76

34 F 鱗癌 67.37 54.52

csv文件導(dǎo)入

csv是最常用的數(shù)據(jù)源格式,具有通用性與普遍性,導(dǎo)入csv文件到R也有眾多方法。

  • 方法1:使用Rstudio導(dǎo)入

[R語(yǔ)言]手把手教你如何繪圖(萬字)

在R中的右側(cè)pane中,有import dataset選項(xiàng),如果安裝了readr包,也提供了該包的圖形界面操作。操作簡(jiǎn)單,但是有個(gè)問題,如果csv格式路徑包含了中文,就會(huì)出現(xiàn)亂碼,然后無法導(dǎo)入。該方法對(duì)國(guó)內(nèi)用戶支持不友好,如果想用此法導(dǎo)入數(shù)據(jù)的話,只能把csv文件重命名并放至純英文的文件夾中。

  • 方法2:內(nèi)置函數(shù)

R中內(nèi)置了讀入csv格式的函數(shù):read.csv函數(shù),該函數(shù)是由read.table函數(shù)改的特定函數(shù),使用逗號(hào)作為分隔符,同時(shí)header與fill這兩個(gè)參數(shù)默認(rèn)為TRUE。

#讀入csv文件 #把路徑換成自己的文件路徑 df <- read.csv("C:/Users/Administrator/Desktop/a文件.csv") #read.csv2,適用于小數(shù)點(diǎn)為“,”的csv文件 df <- read.csv2("C:/Users/Administrator/Desktop/b文件.csv") #小技巧,彈窗選擇文件 df <- read.csv(file.choose())

使用內(nèi)置函數(shù)導(dǎo)入csv文件,則不存在中文路徑的問題,同時(shí)還提供了導(dǎo)入以小數(shù)點(diǎn)為“,”的csv文件。對(duì)于單一csv文件,使用file.choose函數(shù)進(jìn)行圖形界面選擇,更加簡(jiǎn)單方便。

可能遇到的問題:導(dǎo)入中文csv文件,容易出現(xiàn)亂碼。

#中文亂碼處理 df <- read.csv( "C:/Users/Administrator/Desktop/a文件.csv", fileEncoding = "GBK", #指定文件的編碼 encoding = "GBK" #指定編碼 )

使用fileEncoding參數(shù)指定文件的編碼,能解決大部分導(dǎo)入出現(xiàn)中文亂碼的問題。如果導(dǎo)入后在R中顯示出現(xiàn)亂碼,增加encoding參數(shù)指定編碼,也能解決大部分問題。

  • 方法3:使用readr包

readr包又是Hadley Wickham大神貢獻(xiàn)的R包之一,相比于內(nèi)置函數(shù),readr包讀入的速度更快。該包的函數(shù)與內(nèi)置函數(shù)相對(duì)應(yīng),并以read_XXX形式命名。

#readr包 df.readr <- read_csv("C:/Users/Administrator/Desktop/a文件.csv") #同樣提供讀入小數(shù)點(diǎn)為“,”的csv文件 df.readr <- read_csv2("C:/Users/Administrator/Desktop/a文件.csv")

readr包能夠自動(dòng)解析導(dǎo)入文件列的類型,這對(duì)于規(guī)整的數(shù)據(jù)來說很方便,但在我工作中,需要導(dǎo)入的文件常常有非法的字符,比如運(yùn)費(fèi)這一列,數(shù)據(jù)類型應(yīng)該為數(shù)值型,但經(jīng)常出現(xiàn)“--”這種字符串,表示無。readr包會(huì)將該值強(qiáng)制轉(zhuǎn)換為NA,在后續(xù)的處理中,新增計(jì)算列的時(shí)候,比如銷售總額 = 銷售額+運(yùn)費(fèi),則導(dǎo)致該值為NA,為了避免出現(xiàn)這類問題,我通常在導(dǎo)入數(shù)據(jù)的時(shí)候,設(shè)置為純文本導(dǎo)入,然后再做處理。

#設(shè)置純文本導(dǎo)入 df.readr <- read_csv( "C:/Users/Administrator/Desktop/a文件.csv", locale = locale(encoding = "GBK"), #指定編碼 col_types = cols(.default = col_character()) #純文本讀入 )

同樣的,如果出現(xiàn)中文亂碼,使用locale參數(shù)設(shè)置編碼。col_types參數(shù)設(shè)置各列的類型。

對(duì)于未知文件編碼的csv文件,readr包提供了一個(gè)函數(shù)來判斷文件編碼。

#判斷編碼 > guess_encoding("C:/Users/Administrator/Desktop/a文件.csv") # A tibble: 1 x 2 encoding confidence <chr> <dbl> 1 ASCII 1

返回一個(gè)數(shù)據(jù)框,encoding為文件編碼,confidence是該編碼的置信值,越高越有可能是這個(gè)編碼。

  • 方法4:使用data.table包

data.table包是另一個(gè)處理數(shù)據(jù)的利器,對(duì)于GB級(jí)的數(shù)據(jù)更加高效。該包提供了一個(gè)函數(shù)讀入csv文件,相比于上面幾個(gè)方法,其速度是最快。

#data.table包 df.datatable <- fread("C:/Users/Administrator/Desktop/a文件.csv") #指定編碼 df.datatable <- fread("C:/Users/Administrator/Desktop/a文件.csv",encoding = "UTF-8")

fread函數(shù)提供的編碼很少,”UTF-8“,”Latin-1“,默認(rèn)是”unknown“,所以對(duì)中文的支持不太友好,在使用該函數(shù)的時(shí)候,建議把csv文件的編碼轉(zhuǎn)換為”UTF-8“。

csv文件導(dǎo)出

  • 方法1:內(nèi)置函數(shù)

R提供了write.csv函數(shù)導(dǎo)出數(shù)據(jù),該函數(shù)也是write.table函數(shù)的特定版。

#導(dǎo)出文件 write.csv(df, file = "C:/Users/Administrator/Desktop/導(dǎo)出文件.csv") #與read.csv2對(duì)應(yīng) write.csv2(df, file = "C:/Users/Administrator/Desktop/導(dǎo)出文件.csv") #指定編碼 write.csv( df, file = "C:/Users/Administrator/Desktop/導(dǎo)出文件.csv", fileEncoding = "UTF-8" #導(dǎo)出文件編碼 )

  • 方法2:readr包

與read_XX函數(shù)一樣,readr包提供write_XX函數(shù)。

#readr包 write_csv(df, path = "C:/Users/Administrator/Desktop/導(dǎo)出文件.csv") write_csv2(df, path = "C:/Users/Administrator/Desktop/導(dǎo)出文件.csv")

可惜的是,該系列函數(shù)不提供編碼,在我的工作中,使用sql server導(dǎo)入數(shù)據(jù)并處理后(在R中無亂碼情況),使用該函數(shù)導(dǎo)出數(shù)據(jù),中文會(huì)出現(xiàn)亂碼。原因不明,如果有哪位童靴知道的望告知。

為了解決上面的問題,我使用了該包的另一個(gè)函數(shù)。

#導(dǎo)出文件亂碼解決方法 write_excel_csv(df, path = "C:/Users/Administrator/Desktop/導(dǎo)出文件.csv")

改用此函數(shù)導(dǎo)出數(shù)據(jù),能夠解決上面中文亂碼的問題。

  • 方法3:data.table包

data.table包也有對(duì)應(yīng)的導(dǎo)出函數(shù),同樣的,使用sql server導(dǎo)入的數(shù)據(jù),在導(dǎo)出的時(shí)候也出現(xiàn)了亂碼,而該函數(shù)也無參數(shù)指定編碼。

對(duì)于UTF-8編碼的文件,使用該函數(shù),速度是最快的。

#data.table包 fwrite(df, file = "C:/Users/Administrator/Desktop/導(dǎo)出文件.csv")

  1. readr包更為全面,推薦使用該包替換內(nèi)置函數(shù);
  2. data.table包速度最快,符合編碼且數(shù)據(jù)量大可優(yōu)先使用;
  3. Rstudio傻瓜式操作,但對(duì)中文不友好;
cancerData <- read.csv("cancer.csv",fileEncoding = "GBK", encoding = "GBK" )

注意:cancer.csv文件要放在主目錄下

[R語(yǔ)言]手把手教你如何繪圖(萬字)

我們統(tǒng)計(jì)出男女個(gè)數(shù)并且用條形圖來表示

res1 <- table(d.cancer[,'sex']); print(res1)

## sex

## F M

## 13 21

barplot(res1)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

我們可以給表格增加標(biāo)題,然后采用不同的顏色

barplot(res1, main="性別分布", 
        col=c("brown2", "aquamarine1"))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

R函數(shù)colors()可以返回R中定義的用字符串表示的六百多種顏色名字。 如head(colors(),6)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

下面的函數(shù)可以用來挑選顏色, 鼠標(biāo)點(diǎn)擊畫出的顏色就可以挑選, 結(jié)果返回挑選出的顏色名:

select.colors <- function(){
  nc <- length(colors())
  x <- rep(seq(26), 26)[1:nc]
  y <- rep(seq(26), each=26)[1:nc]
  cols <- colors()
  plot(x, y, type="p", pch=16, cex=2,
       col=cols)
  res <- cols[identify(x,y, labels=cols)]
  res
}

R語(yǔ)言sep函數(shù)

函數(shù)形式:rep(x, time = , length = , each = ,)

參數(shù)說明:

x:代表的是你要進(jìn)行復(fù)制的對(duì)象,可以是一個(gè)向量或者是一個(gè)因子。

times:代表的是復(fù)制的次數(shù),只能為正數(shù)。負(fù)數(shù)以及NA值都會(huì)為錯(cuò)誤值。復(fù)制是指的是對(duì)整個(gè)向量進(jìn)行復(fù)制。

each:代表的是對(duì)向量中的每個(gè)元素進(jìn)行復(fù)制的次數(shù)。

length.out:代表的是最終輸出向量的長(zhǎng)度。

示例:

rep(1:4, 2) #對(duì)向量(1,2,3,4)復(fù)制兩次

[1] 1 2 3 4 1 2 3 4

rep(1:4, each = 2) #對(duì)向量(1,2,3,4)中的每個(gè)元素復(fù)制兩次

[1] 1 1 2 2 3 3 4 4

rep(1:4, each = 2, length.out = 4) #最后輸出向量的長(zhǎng)度為4

[1] 1 1 2 2

rep(x, …):將vector x的值循環(huán)n遍

rep(1:4, 2)

[1] 1 2 3 4 1 2 3 4

…: 除了x的其他參數(shù),可以通過…傳到其他方法里

times:整個(gè)數(shù)組循環(huán)幾遍

rep(1:4, each = 2, times = 3)

[1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4

each:每個(gè)element循環(huán)幾遍

rep(1:4, each = 2)
[1] 1 1 2 2 3 3 4 4
rep(1:4, c(2,2,2,2))
[1] 1 1 2 2 3 3 4 4
rep(1:4, c(2,1,2,1))
[1] 1 1 2 3 3 4  

length.out 輸出長(zhǎng)度為多少

rep(1:4, each = 2, len = 4)
[1] 1 1 2 2
#長(zhǎng)了會(huì)被截掉
rep(1:4, each = 2, len = 13)
[1] 1 1 2 2 3 3 4 4 1 1 2 2 3
#短了會(huì)根據(jù)前面規(guī)則補(bǔ)上

seq函數(shù)

seq()函數(shù)是產(chǎn)生等距間隔數(shù)列的函數(shù),其使用格式為:

seq(from = 1, to = 1,by = ((to - from)/(length.out - 1)) ,length.out= NULL, length.out = NULL,...)

seq()函數(shù)中參數(shù)的名稱、取值及意義

名稱 取值及意義??

from 數(shù)值,表示等間隔數(shù)列開始的位置,默認(rèn)值為1

to 數(shù)值,表示等間隔數(shù)列結(jié)束的位置,默認(rèn)值為1

by 數(shù)值,表示等間隔數(shù)列之間的間隔

length.out 數(shù)值,表示等間隔數(shù)列的長(zhǎng)度

along.out 向量,表示產(chǎn)生的等間隔數(shù)列與向量具有相同的長(zhǎng)度

注意:by, length.out 和along.with 3個(gè)參數(shù)只能輸入一項(xiàng)。

> seq(0,1,length.out=11)
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
>  seq(1,9,by=2)
[1] 1 3 5 7 9
>  seq(1,9,by=pi)
[1] 1.000000 4.141593 7.283185
> seq(10)
 [1]  1  2  3  4  5  6  7  8  9 10

我們運(yùn)行了上述代碼之后可以看到我們可以自行選擇顏色

[R語(yǔ)言]手把手教你如何繪圖(萬字)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

點(diǎn)擊完兩個(gè)顏色記得在命令行輸入界面按esc退出,才可以顯示出這個(gè)表格圖

用width選項(xiàng)與xlim選項(xiàng)配合可以調(diào)整條形寬度,如

barplot(res1, width=0.5, xlim=c(-3, 5),
        main="性別分布", 
        col=c("brown2", "aquamarine1"))

[R語(yǔ)言]手把手教你如何繪圖(萬字)


xlim可以用于plot函數(shù)作圖,它的意思是xlim = c(<min>, <max>)。就是說縮放函數(shù)的x軸,范圍在min與max之間。

經(jīng)過我不斷的試驗(yàn),我發(fā)現(xiàn)F占據(jù)x軸的0位置,M占據(jù)x軸的1位置

hhh

按性別與病理類型交叉分組后統(tǒng)計(jì)頻數(shù),結(jié)果稱為列聯(lián)表:??

res2 <- with(cancerData, table(sex, type)); res2

[R語(yǔ)言]手把手教你如何繪圖(萬字)

with函數(shù)

with()R語(yǔ)言中的函數(shù)用于通過評(píng)估函數(shù)參數(shù)內(nèi)的表達(dá)式來修改 DataFrame 的數(shù)據(jù)。

用法: with(x, expr)

參數(shù):
x: DataFrame
expr:修改數(shù)據(jù)的表達(dá)式

范例1:

# R program to modify data of an object
  
# Calling predefined data set
BOD
  
# Calling with() function
with(BOD, {BOD$demand <- BOD$demand + 1; print(BOD$demand)})

輸出:

Time demand
1    1    8.3
2    2   10.3
3    3   19.0
4    4   16.0
5    5   15.6
6    7   19.8
[1]  9.3 11.3 20.0 17.0 16.6 20.8

范例2:

# R program to modify data of an object
  
# Creating a data frame
df = data.frame( 
  "Name" = c("abc", "def", "ghi"), 
  "Language" = c("R", "Python", "Java"), 
  "Age" = c(22, 25, 45) 
) 
df
  
# Calling with() function
with(df, {df$Age <- df$Age + 10; print(df$Age)})

輸出:

  Name Language Age
1  abc        R  22
2  def   Python  25
3  ghi     Java  45
[1] 32 35 55

用分段條形圖表現(xiàn)交叉分組頻數(shù), 交叉頻數(shù)表每列為一條:

barplot(res2, legend=TRUE)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

這里的legend的意思就是需不需要加上標(biāo)簽名,

[R語(yǔ)言]手把手教你如何繪圖(萬字)

用并排條形圖表現(xiàn)交叉分組頻數(shù), 交叉頻數(shù)表每列為一組:

barplot(res2, beside=TRUE, legend=TRUE)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

增加標(biāo)題,指定顏色,調(diào)整圖例位置,調(diào)整條形寬度:

barplot(res2, beside=TRUE, legend=TRUE,
        main='不同種類病人的性別',
        ylim=c(0, 20),
        xlim=c(-1, 6), width=0.6,
        col=c("brown2", "aquamarine1"))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

直方圖和密度估計(jì)圖

hist作直方圖以了解連續(xù)取值變量分布情況.

例如,下面的程序模擬正態(tài)分布數(shù)據(jù)并做直方圖:

x <- rnorm(30, mean=100, sd=1)
print(round(x,2))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

round函數(shù)

R 語(yǔ)言提供了一個(gè)內(nèi)置函數(shù) round(),它四舍五入到給定的位數(shù),如果沒有提供四舍五入的位數(shù),它會(huì)將數(shù)字四舍五入到最接近的整數(shù)。

用法:round(x,digits=n)

參數(shù):

x:要四舍五入的數(shù)字

digit:指定數(shù)字

范例1:

# R program to calculate round value 
    
# Using round() method 
answer1 <- round(2.356) 
answer2 <- round(2.356, digits = 2)  
answer3 <- round(2.5)
answer4 <- round(2.5, digits = 1)  
  
print(answer1) 
print(answer2) 
print(answer3) 
print(answer4) 

輸出:

2

2.36

2

2.5

范例2:

# R program to calculate round value 
    
# Using round() method 
answer1 <- round(c(1.5, 2.6, -3, -3.4)) 
  
print(answer1) 

輸出:2 3 -3 -3

了解了round函數(shù)是怎么用的之后,我們回歸上面的代碼

x <- rnorm(30, mean=100, sd=1)
print(round(x,2))
hist(x)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

可以用main=、xlab=、ylab=等選項(xiàng), 可以用col=指定各個(gè)條形的顏色,如:

hist(x, col=rainbow(15), 
     main='正態(tài)隨機(jī)數(shù)', xlab='', ylab='頻數(shù)')

[R語(yǔ)言]手把手教你如何繪圖(萬字)

函數(shù)density()估計(jì)核密度。 下面的程序作直方圖, 并添加核密度曲線:

tmp.dens <- density(x)
hist(x, freq=FALSE,
     ylim=c(0,max(tmp.dens$y)),
     col=rainbow(15),
     main='正態(tài)隨機(jī)數(shù)',
     xlab='', ylab='頻數(shù)')
lines(tmp.dens, lwd=2, col='blue')

[R語(yǔ)言]手把手教你如何繪圖(萬字)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

density核密度

關(guān)于density作圖詳細(xì)教程建議大家看這篇博客??R語(yǔ)言中density密度圖繪制,這篇文章是用的ggplot2的package

盒型圖

首先帶大家介紹以下boxplot()函數(shù)

boxplot()

盒形圖是數(shù)據(jù)集中數(shù)據(jù)分布情況的衡量標(biāo)準(zhǔn)。它將數(shù)據(jù)集分為三個(gè)四分位數(shù)。盒形圖表示數(shù)據(jù)集中的最小值,最大值,中值,第一四分位數(shù)第四四分位數(shù)。 通過為每個(gè)數(shù)據(jù)集繪制箱形圖,比較數(shù)據(jù)集中的數(shù)據(jù)分布也很有用。

R中的盒形圖通過使用boxplot()函數(shù)來創(chuàng)建。

語(yǔ)法

在R中創(chuàng)建盒形圖的基本語(yǔ)法是

boxplot(x, data, notch, varwidth, names, main)

以下是使用的參數(shù)的描述 -

  • x - 是向量或公式。
  • data - 是數(shù)據(jù)幀。
  • notch - 是一個(gè)邏輯值,設(shè)置為TRUE可以畫出一個(gè)缺口。
  • varwidth - 是一個(gè)邏輯值。設(shè)置為true以繪制與樣本大小成比例的框的寬度。
  • names - 是將在每個(gè)箱形圖下打印的組標(biāo)簽。
  • main - 用于給圖表標(biāo)題。

示例

我們用一個(gè)數(shù)據(jù)集 mtcars來創(chuàng)建一個(gè)基本的盒型圖

下面我們首先看看mtcars數(shù)據(jù)集中的mpg和cyl列

input <- mtcars[,c('mpg','cyl')]
print(head(input))

注:這個(gè)數(shù)據(jù)集是R語(yǔ)言中已經(jīng)存在的,大家可以直接利用

當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果??

> print(head(input))
                   mpg cyl
Mazda RX4         21.0   6
Mazda RX4 Wag     21.0   6
Datsun 710        22.8   4
Hornet 4 Drive    21.4   6
Hornet Sportabout 18.7   8
Valiant           18.1   6

創(chuàng)建盒型圖

下面的腳本將為mgp(每加侖英里)和cyl(氣缸數(shù))列之間的關(guān)系創(chuàng)建一個(gè)盒型圖.

# Give the chart file a name.
png(file = "boxplot.png")

# Plot the chart.
boxplot(mpg ~ cyl, data = mtcars, xlab = "氣缸數(shù)",
   ylab = "每加侖里程", main = "里程數(shù)據(jù)")

# Save the file.
dev.off()

[R語(yǔ)言]手把手教你如何繪圖(萬字)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

盒型圖與凹口

我們可以繪制帶有凹槽的盒形圖,以了解不同數(shù)據(jù)組的中位數(shù)如何相互匹配。以下腳本將為每個(gè)數(shù)據(jù)組創(chuàng)建一個(gè)帶有凹槽的盒形圖形。

# Give the chart file a name.
png(file = "boxplot_with_notch.png")
#這個(gè)圖片文件將存放在你的工作目錄

# Plot the chart.
boxplot(mpg ~ cyl, data = mtcars, 
   xlab = "氣缸數(shù)",
   ylab = "每加侖里程", 
   main = "里程數(shù)據(jù)",
   notch = TRUE, 
   varwidth = TRUE, 
   col = c("green","yellow","purple"),
   names = c("高","中","低")
)
# Save the file.
dev.off()

[R語(yǔ)言]手把手教你如何繪圖(萬字)

OK,學(xué)會(huì)了boxplot的基本運(yùn)用,我們來看一些其他的運(yùn)用

盒型圖用于簡(jiǎn)潔得查看表現(xiàn)變量分布,如??

with(cancerData, boxplot(v0))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

其中中間粗線是中位數(shù), 盒子上下邊緣是四分之三和四分之一分位數(shù), 兩條觸須線延伸到取值區(qū)域的邊緣。

盒形圖可以很容易地比較兩組或多組,如??

with(cancerData, boxplot(v0 ~ sex))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

也可以畫若干個(gè)變量的并排盒形圖,如??

with(cancerData,
     boxplot(list('療前'=v0, '療后'=v1)))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

正態(tài)QQ圖

QQ圖是一種散點(diǎn)圖,對(duì)應(yīng)于正態(tài)分布的QQ圖,就是由標(biāo)準(zhǔn)正態(tài)分布的分位數(shù)為橫坐標(biāo),樣本值為縱坐標(biāo)的散點(diǎn)圖(其他版本,有將 (x-m)/std 作為縱坐標(biāo),那么正態(tài)分布得到的散點(diǎn)圖是直線:y=x)。要利用QQ圖鑒別樣本數(shù)據(jù)是否近似于正態(tài)分布,只需看QQ圖上的點(diǎn)是否近似地在一條直線附近,圖形是直線說明是正態(tài)分布,而且該直線的斜率為標(biāo)準(zhǔn)差,截距為均值,用QQ圖還可獲得樣本偏度和峰度的粗略信息。

如果樣本是按正態(tài)分布的,那么f(x)即是一個(gè)正態(tài)分布的概率密度函數(shù)。根據(jù)正態(tài)分布的特性,我們又可以推導(dǎo)出對(duì)應(yīng)的標(biāo)準(zhǔn)正態(tài)分布的概率密度函數(shù):y = f( (x-m)/std )其中m為樣本均值(截距),std為樣本標(biāo)準(zhǔn)差(斜率)。

設(shè)標(biāo)準(zhǔn)正態(tài)分布的概率密度函數(shù)為 y= f(n),既然這些值一一對(duì)應(yīng),則有:

(x-m)/std=n

即:x=n*std+m

這是一條斜率為樣本標(biāo)準(zhǔn)差,截距為m的直線,就是在q-q圖中代表著正態(tài)分布的直線。

用qqnorm和qqline作正態(tài)QQ圖。 當(dāng)變量樣本來自正態(tài)分布總體時(shí), 正態(tài)QQ圖的散點(diǎn)近似在一條直線周圍。

[R語(yǔ)言]手把手教你如何繪圖(萬字)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

下面的程序模擬正態(tài)分布隨機(jī)數(shù),并作正態(tài)QQ圖:

qqnorm(x)
qqline(x, lwd=2, col='blue')

[R語(yǔ)言]手把手教你如何繪圖(萬字)

下面的程序模擬對(duì)數(shù)正態(tài)數(shù)據(jù),并作正態(tài)QQ圖:

z <- 10^rnorm(30, mean=0, sd=0.2)
qqnorm(z)
qqline(z, lwd=2, col='blue')

[R語(yǔ)言]手把手教你如何繪圖(萬字)

散點(diǎn)圖

我們讀入class.csv,以d.class數(shù)據(jù)為例,其中含有name,sex,age,height,weight等變量.

d.class <- read.csv("class.csv")

[R語(yǔ)言]手把手教你如何繪圖(萬字)

class.csv

體重對(duì)身高的散點(diǎn)圖

plot(d.class$height,d.class$weight)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

接下來我們用with()函數(shù)來簡(jiǎn)化數(shù)據(jù)框變量的訪問格式

with(d.class,plot(height,weight))

得出的圖跟上面一張圖是一樣的

我們?cè)趐lot()函數(shù)內(nèi)用main參數(shù)來增加一個(gè)標(biāo)題

用xlab參數(shù)來指定橫軸標(biāo)注,用ylab參數(shù)指定縱軸標(biāo)注,如:

with(d.class,
    plot(height,weight,
        main = '體重與身高關(guān)系',
        xlab='身高',ylab='體重'))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

然后我們?cè)儆胮ch參數(shù)來指定不同散點(diǎn)形狀,用col參數(shù)來指定顏色,用cex參數(shù)指定大小,如下??

with(d.class,plot(
  height,weight,pch=16,col='blue',
  cex=2
))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

我們?nèi)绻麑ch改為15的話,圖上的點(diǎn)就會(huì)變成正方形

用氣泡大小表現(xiàn)第三維(年齡):

with(d.class,
     plot(height, weight,
          pch=16, col='blue',
          cex=1 + (age - min(age))/(max(age)-min(age))))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

用氣泡大小表現(xiàn)年齡, 用顏色區(qū)分性別:

with(d.class, 
        plot(height, weight,
          main='體重與身高關(guān)系',
          xlab='身高', ylab='體重',
          pch=16, 
          col=ifelse(sex=='M', 'blue', 'red'),
          cex=1 + (age - min(age))
            /(max(age)-min(age))))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

這里我用select自己選了兩個(gè)顏色,代碼在上面已經(jīng)展示過了

[R語(yǔ)言]手把手教你如何繪圖(萬字)

pairs()散點(diǎn)矩陣圖

pairs(d.class[, c('age', 'height', 'weight')])

[R語(yǔ)言]手把手教你如何繪圖(萬字)

曲線圖

curve()

curve 函數(shù)常用于繪制函數(shù)對(duì)應(yīng)的曲線,確定函數(shù)的表達(dá)式,以及對(duì)應(yīng)的需要展示的起始坐標(biāo)和終止坐標(biāo),curve函數(shù)就會(huì)自動(dòng)化的繪制在該區(qū)間內(nèi)的函數(shù)圖像

基本用法,代碼示例:

curve(sin, -2*pi, 2*pi)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

第一個(gè)參數(shù)為函數(shù)的名稱,這里我們選擇的是sin 三角函數(shù),后兩個(gè)參數(shù)為對(duì)應(yīng)的起始和終止區(qū)間

下面詳細(xì)解釋一下每個(gè)參數(shù):

1) expr : 對(duì)應(yīng)的函數(shù)名稱,這個(gè)參數(shù)的值可以有3中寫法:

第一種: 函數(shù)的名稱

代碼示例:

# y = 2x + 1
coef_line  <- function(x){
	2 * x + 1
}

curve(expr = coef_line, from = 1, to = 3)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

這里我們先定義了一個(gè)函數(shù)coef_line , 然后將函數(shù)名稱傳遞給curve

第二種:expression

代碼示例:

curve(expr = 2 * x + 1, from = 2 , to = 6)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

這里的2 * x + 1 就是一個(gè)表達(dá)式 expression

第三種: call, 函數(shù)調(diào)用

代碼示例:

# y = 2x + 1
coef_line  <- function(x){
	2 * x + 1
}

x <- 1:5
curve(expr = coef_line(x), from = 2, to = 6)

效果圖和上面的是一樣的

這里我們調(diào)用函數(shù)coef_line 去處理x 這個(gè)對(duì)象

2)from, to : 自變量x的起始和終止位置,這個(gè)用法很簡(jiǎn)單,就不詳細(xì)解釋了

3)xname : x 軸的標(biāo)簽, 這里參數(shù)只有當(dāng)傳遞進(jìn)來的是函數(shù)名稱時(shí),才能運(yùn)行

代碼示例:

# y = 2x + 1
coef_line  <- function(x){
	2 * x + 1
}

curve(expr = coef_line, from = 2, to = 6, xname = "X Var")

[R語(yǔ)言]手把手教你如何繪圖(萬字)

curve()函數(shù)接收一個(gè)函數(shù),或者一個(gè)以x為變量的表達(dá)式,以及曲線的自變量的左右端點(diǎn),繪制函數(shù)或者表達(dá)式的曲線圖,如:

curve(1 - 3*x - x^2, -4 ,2)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

又比如

curve(sin,-2*pi ,2*pi)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

這里再為大家詳細(xì)得介紹一下plot函數(shù)的運(yùn)用

plot()函數(shù)

plot是R中的基本畫圖工具,直接plot(x),x為一個(gè)數(shù)據(jù)集,就能畫出圖。細(xì)節(jié)往往制勝的關(guān)鍵,所以就詳細(xì)來看下plot的所有可設(shè)置參數(shù)及參數(shù)設(shè)置方法。

下面講到的圖形參數(shù),是graphic包中的常見參數(shù),graphic不同圖形方法中,這些參數(shù)都是相同的。

  1. 符號(hào)和線條

pch指定圖形(在type=”p”/”o”/”b”時(shí))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

可加cex參數(shù),用來控制圖中的符號(hào)大小,默認(rèn)為cex=1

當(dāng)PCH為21-25時(shí),應(yīng)指定參數(shù)“col =”和“bg =”。PCH也可以是字符,例如“?!保埃ァ?,“A”,“a”,并且字符將被繪制

[R語(yǔ)言]手把手教你如何繪圖(萬字)

lty指定線形;lwd改變線條粗細(xì)??

[R語(yǔ)言]手把手教你如何繪圖(萬字)

  1. type圖形的類型

“p”點(diǎn)圖

“l(fā)”線圖

“b”點(diǎn)線圖,線不穿過點(diǎn)

“c”虛線圖

“o”點(diǎn)線圖,線穿過點(diǎn)

“h”直方圖

“s”階梯圖

“S”步驟圖

“n”無圖

x<-c(1:10)
png("~/plotSamples.png",width=9,height=9,unit="in",res=108)   
#在工作目錄下創(chuàng)建plotSamples.png圖
par(mfcol=c(3,3))#下面會(huì)講到
plot(x,type="p",main="p")
plot(x,type="l",main="l")
plot(x,type="b",main="b")
plot(x,type="c",main="c")
plot(x,type="o",main="o")
plot(x,type="h",main="h")
plot(x,type="s",main="s")
plot(x,type="S",main="S")
plot(x,type="n",main="n")
dev.off()

[R語(yǔ)言]手把手教你如何繪圖(萬字)

  1. 顏色

col:默認(rèn)繪圖顏色。某些函數(shù)(如lines、pie)可以接受一個(gè)含有顏色值的向量,并自動(dòng)循環(huán)使用.

例如:col=c("red", "blue")需要繪制三條線,那么三條顏色分別為red、blue、red

col.axis:坐標(biāo)軸刻度文字的顏色,不是坐標(biāo)軸的顏色

col.lab:坐標(biāo)軸標(biāo)簽(名稱)的顏色

col.main:標(biāo)題的顏色

col.sub:副標(biāo)題的顏色

fg:圖形的前景色

bg:圖形的背景色

col指定圖形顏色

colors()方法可以查看R中所有可用的顏色名,一共有657種顏色名,根據(jù)顏色名可直接設(shè)置圖形的顯示顏色。下面是部分顏色,完整的圖見鏈接:R語(yǔ)言顏色表

除了名稱外,同樣可以用下標(biāo),十六進(jìn)制顏色值,RGB值和HSV值來指定顏色。例子:col=1、col="white"、col="#FFFFFF"、col=rgb(1,1,1)和col=hsv(0,0,1)。

另外,R中還有許多生成顏色變量的函數(shù)。有rainbow()、heat.colors()、terrain.colors()、topo.colors()、cm.colors()方法,gray()方法生成多階灰度色。

我們?cè)趐lot函數(shù)中使用type='l'參數(shù)也可以作曲線圖,比如

x <- seq(0, 2*pi, length=200)
y <- sin(x)
plot(x,y, type='l')

[R語(yǔ)言]手把手教你如何繪圖(萬字)

除了這些,還可以用main, xlab, ylab, col等參數(shù), 用lwd指定線寬度, lty指定虛線,如

plot(x,y, type='l', lwd=5, lty=8)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

如果有多條曲線的話,我們可以用matplot()函數(shù),比如

x <- seq(0, 2*pi, length=200)
y1 <- sin(x)
y2 <- cos(x)
matplot(x, cbind(y1, y2), type='l', 
        lty=1, lwd=2, col=c("red", "blue"),
        xlab="x", ylab="")
abline(h=0, col='gray')

[R語(yǔ)言]手把手教你如何繪圖(萬字)

abline()函數(shù)

abline 函數(shù)的作用是在一張圖表上添加直線, 可以是一條斜線,通過x或y軸的交點(diǎn)和斜率來確定位置;也可以是一條水平或者垂直的線,只需要指定與x軸或y軸交點(diǎn)的位置就可以了

常見用法:

1)添加直線

水平線:

通過h 參數(shù)設(shè)置直線與y軸的交點(diǎn)就可以了,代碼示例如下:

plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6))
abline(h = 0, col = "red")

[R語(yǔ)言]手把手教你如何繪圖(萬字)

垂直線:

通過v 參數(shù)設(shè)置直線與x軸的交點(diǎn)就可以了,代碼示例如下:

plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6))
abline(v = 0, col = "blue")

[R語(yǔ)言]手把手教你如何繪圖(萬字)

除了上述的基本用法之外,h和v參數(shù)還支持同時(shí)設(shè)置多個(gè)值,一次性可以畫多條直線,代碼示例如下:

plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6))
abline(h = c(0,1,2), v = c(0,1,2), col = c("red", "green", "blue"))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

2)添加斜線

abline 函數(shù)添加斜線有兩種用法:

第一種分別指定交點(diǎn)和斜率的值,參數(shù) a 代表直線與y軸的交點(diǎn)距坐標(biāo)原點(diǎn)的位置,參數(shù) b 代表斜率, 代碼示例如下:

plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6))
abline(h = 0, col = "gray")
abline(v = 0, col = "gray")
abline(a = 1 , b = 1, col = "red")
abline(a = 2 ,b = 1, col  = "blue")

[R語(yǔ)言]手把手教你如何繪圖(萬字)

第二種通過一個(gè)長(zhǎng)度為2的向量同時(shí)指定交點(diǎn)與原點(diǎn)的距離和斜率,代碼示例如下:

plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6))
abline(h = 0, col = "gray")
abline(v = 0, col = "gray")
abline(coef = c(1, 1), col = "red")
abline(coef = c(2, 1), col = "blue")

[R語(yǔ)言]手把手教你如何繪圖(萬字)

對(duì)于線條來說,有許多的屬性,比如顏色,線條類型,線條粗細(xì)等,在abline 函數(shù)中也是可以對(duì)這些屬性進(jìn)行設(shè)置的

  1. col : 線條的顏色
  2. lty : 線條的類型
  3. lwd : 線條的寬度

這些屬性的設(shè)置都很簡(jiǎn)單,舉一個(gè)例子:

plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6))
abline(v = 0, col = "gray", lwd = 2, lty = 2)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

上述的都是基本用法,其實(shí)還有一種用法,可以添加一條回歸線,對(duì)于一元線性回歸來說,回歸表達(dá)式就是一條直線的公式,abline 函數(shù)可以直接利用回歸結(jié)果進(jìn)行作圖

代碼如下:

z <- lm(dist ~ speed, data = cars)
plot(cars)
abline(z)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

curve的運(yùn)用

curve(expr, from = NULL, to = NULL, n = 101, add = FALSE, type = "l", xname = "x", xlab = xname, ylab = NULL, log = NULL, xlim = NULL, ...)

主要參數(shù)如下:

expr:函數(shù)名稱或一個(gè)關(guān)于變量x的函數(shù)表達(dá)式;

from,to:表示繪圖的起止范圍;

n:一個(gè)整數(shù)值,表示x取值的數(shù)量;

add:是一個(gè)邏輯值,當(dāng)為TRUE時(shí),表示將繪圖添加到已存在的繪圖中;

type:與plot函數(shù)中type含義相同;

xname:用于x軸變量的名稱。

xlab,ylab:x軸和y軸的標(biāo)簽名稱。

三維圖

persp函數(shù)作三維曲面圖, contour等值線圖, image色塊圖。 坐標(biāo)x和y構(gòu)成一張平面網(wǎng)格, 數(shù)據(jù)z包含z坐標(biāo)的矩陣,每行對(duì)應(yīng)一個(gè)橫坐標(biāo), 每列對(duì)應(yīng)一個(gè)縱坐標(biāo)。

下面的程序生成二元正態(tài)分布密度曲面數(shù)據(jù):

x <- seq(-3,3, length=100)
y <- x
f <- function(x,y,ssq1=1, ssq2=2, rho=0.5){
     det1 <- ssq1*ssq2*(1 - rho^2)
     s1 <- sqrt(ssq1)
     s2 <- sqrt(ssq2)
     1/(2*pi*sqrt(det1)) * exp(-0.5 / det1 * (
       ssq2*x^2 + ssq1*y^2 - 2*rho*s1*s2*x*y))
}
z <- outer(x, y, f)

作二元正態(tài)密度函數(shù)的三維曲面圖、等高線圖、色塊圖:

persp(x, y, z)

三維曲面圖:??

[R語(yǔ)言]手把手教你如何繪圖(萬字)

等高線圖:

contour(x, y, z)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

色塊圖:??

image(x,y,z)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

動(dòng)態(tài)三維圖

rgl包能夠制作動(dòng)態(tài)的三維散點(diǎn)圖和曲面圖

library(rgl)

iris數(shù)據(jù)框包含了3種鳶尾花的各50個(gè)樣品的測(cè)量值, 測(cè)量值包括花萼長(zhǎng)、寬, 花瓣長(zhǎng)、寬。 用rgl的plot3d()作動(dòng)態(tài)三維散點(diǎn)圖如下:

with(iris, plot3d(
  Sepal.Length, Sepal.Width, Petal.Length, 
  type="s", col=as.numeric(Species)))

這個(gè)圖可以用鼠標(biāo)拖動(dòng)旋轉(zhuǎn)。 其中type="s"表示繪點(diǎn)符號(hào)是球體形狀。 還可選"p"(點(diǎn))、"l"(連線)、"h"(向z=0連線)。 可以用size=指定大小倍數(shù)(缺省值為3)。

用rgl的persp3d()函數(shù)作曲面圖。 如 二元正態(tài)分布密度曲面:

x <- seq(-3,3, length=100)
y <- x
f <- function(x,y,ssq1=1, ssq2=2, rho=0.5){
     det1 <- ssq1*ssq2*(1 - rho^2)
     s1 <- sqrt(ssq1)
     s2 <- sqrt(ssq2)
     1/(2*pi*sqrt(det1)) * exp(-0.5 / det1 * (
       ssq2*x^2 + ssq1*y^2 - 2*rho*s1*s2*x*y))
}
z <- outer(x, y, f)
persp3d(x=x, y=y, z=z, col='red')

rgl也有低級(jí)圖形函數(shù)支持向已有圖形添加物體、文字等, 也支持并列多圖。 適當(dāng)設(shè)置可以在R Markdown生成的HTML結(jié)果中動(dòng)態(tài)顯示三維圖。

低級(jí)圖形函數(shù)

abline()

上面為了方便理解已經(jīng)介紹過一次

用points函數(shù)增加散點(diǎn),如:

x <- seq(0, 2*pi, length=200)
y <- sin(x)
special <- list(x=(0:4)*pi/2, y=sin((0:4)*pi/2))
plot(x, y, type='l')
points(special$x, special$y, 
       col="red", pch=16, cex=2)
points(special, col="red", pch=16, cex=2)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

lines()

用lines函數(shù)增加曲線,如:

x <- seq(0, 2*pi, length=200)
y1 <- sin(x)
y2 <- cos(x)
plot(x, y1, type='l', lwd=2, col="red")
lines(x, y2, lwd=2, col="blue")
abline(h=0, col='gray')

[R語(yǔ)言]手把手教你如何繪圖(萬字)

legand()增加圖例

可以用legend函數(shù)增加標(biāo)注,如:

x <- seq(0, 2*pi, length=200)
y1 <- sin(x)
y2 <- cos(x)
plot(x, y1, type='l', lwd=2, col="red")
lines(x, y2, lwd=2, col="blue")
abline(h=0, col='gray')
legend(0, -0.5, col=c("red", "blue"),
       lty=c(1,1), lwd=c(2,2), 
       legend=c("sin", "cos"))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

x <- seq(0, 2*pi, length=200)
y1 <- sin(x)
y2 <- cos(x)
plot(x, y1, type='l', lwd=2, col="red")
lines(x, y2, lwd=2, col="blue")
abline(h=0, col='gray')
legend('top', col=c("red", "blue"),
       lty=c(1,1), lwd=c(2,2), 
       legend=c("sin", "cos"))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

axis()坐標(biāo)軸

在plot()函數(shù)中用 axes=FALSE可以取消自動(dòng)的坐標(biāo)軸。 用box()函數(shù)畫坐標(biāo)邊框。 用axis函數(shù)單獨(dú)繪制坐標(biāo)軸。 axis的第一個(gè)參數(shù)取1,2,3,4, 分別表示橫軸、縱軸、上方和右方。 axis的參數(shù)at為 刻度線位置,labels為標(biāo)簽。 如:

x <- c('一月'=15, '二月'=20, 
       '三月'=18, '四月'=22)
plot(seq(along=x), x, axes=FALSE,
     type='b', lwd=3,
     main='前四個(gè)月銷售額',
     xlab='', ylab='銷售額')
box(); axis(2)
axis(1, at=seq(along=x), labels=names(x))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

R基本繪圖支持少量的數(shù)學(xué)公式顯示功能,如不用數(shù)學(xué)符號(hào)時(shí):

x <- seq(0, 2*pi, length=200)
y1 <- sin(x)
plot(x, y1, type='l', lwd=2,
     axes=FALSE,
     xlab='x', ylab='')
abline(h=0, col='gray')
box()
axis(2)
axis(1, at=(0:4)/2*pi,
     labels=c('0', 'pi/2', 'pi', '3pi/2', '2pi'))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

使用數(shù)學(xué)符號(hào)時(shí):

x <- seq(0, 2*pi, length=200)
y1 <- sin(x)
plot(x, y1, type='l', lwd=2,
     axes=FALSE,
     xlab='x', ylab='')
abline(h=0, col='gray')
box()
axis(2)
axis(1, at=(0:4)/2*pi,
     labels=c(0, expression(pi/2), 
     expression(pi), expression(3*pi/2), 
     expression(2*pi)))

繪圖中使用數(shù)學(xué)符號(hào)的演示:

demo(plotmath)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

text()給圖內(nèi)區(qū)域添加文字

text()在坐標(biāo)區(qū)域內(nèi)添加文字。 mtext()在邊空處添加文字。 如

with(d.class, plot(height, weight))
lm1 <- lm(weight ~ height, data=d.class)
abline(lm1, col='red', lwd=2)
a <- coef(lm1)[1]
b <- coef(lm1)[2]
text(52, 145, adj=0, '線性回歸:')
text(52, 140, adj=0,
    substitute(hat(y) == a + b*x,
    list(a=round(coef(lm1)[1], 2), 
         b=round(coef(lm1)[2], 2))))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

locator()和identify()

locator()函數(shù)在執(zhí)行時(shí)等待用戶在圖形的坐標(biāo)區(qū)域內(nèi)點(diǎn)擊并返回點(diǎn)擊處的坐標(biāo)。 可以用參數(shù)n指定要點(diǎn)擊的點(diǎn)的個(gè)數(shù)。 不指定個(gè)數(shù)則需要用右鍵菜單退出。 這個(gè)函數(shù)也可以用來要求用戶點(diǎn)擊以進(jìn)行到下一圖形。

x <- seq(0, 2*pi, length=200)
y1 <- sin(x); y2 <- cos(x)
plot(x, y1, type='l',
     col="red")
lines(x, y2, col="blue")
legend(locator(1), col=c("red", "blue"),
       lty=c(1,1), legend=c("sin", "cos"))

identify()可以識(shí)別點(diǎn)擊處的點(diǎn)并標(biāo)注標(biāo)簽, 格式為identify(x, y, labels), 其中(x,y)給出可點(diǎn)擊的點(diǎn)的坐標(biāo), labels是每個(gè)點(diǎn)對(duì)應(yīng)的標(biāo)簽, 點(diǎn)擊那個(gè)點(diǎn)就在那個(gè)點(diǎn)旁邊標(biāo)對(duì)應(yīng)的標(biāo)簽。

圖形的參數(shù)

用圖形參數(shù)可以選擇點(diǎn)的形狀、顏色、線型、粗細(xì)、坐標(biāo)軸做法、邊空、一頁(yè)多圖等。 有些參數(shù)直接用在繪圖函數(shù)內(nèi),如plot函數(shù)可以用 pch、col、cex、lty、 lwd等參數(shù)。 有些圖形參數(shù)必須使用par()函數(shù)指定。 par函數(shù)指定圖形參數(shù)并返回原來的參數(shù)值, 所以在修改參數(shù)值作圖后通常應(yīng)該恢復(fù)原始參數(shù)值, 做法如

opar <- par(mfrow=c(2,2))
with(d.class, {hist(height);
     boxplot(height);
     qqnorm(height); qqline(height);
     plot(height); rug(height,side=2)})

[R語(yǔ)言]手把手教你如何繪圖(萬字)

par(opar)

在函數(shù)內(nèi),可以在函數(shù)開頭修改了圖形參數(shù)后, 用on.exit()函數(shù)將恢復(fù)原始圖形參數(shù)作為函數(shù)退出前必須完成的任務(wù),如

f <- function(){
    opar <- par(mfrow=c(2,2)); on.exit(par(opar))
    with(
        d.class,
        {hist(height);
         boxplot(height);
         qqnorm(height); qqline(height);
         plot(height); rug(height,side=2)
     })
}
f()

例子:用圖形參數(shù)解決barplot圖形橫坐標(biāo)值過寬

barplot的橫坐標(biāo)標(biāo)注太寬時(shí),自動(dòng)將某些標(biāo)注省略。 用las=2指定坐標(biāo)軸刻度標(biāo)簽垂直于坐標(biāo)軸, 這樣x軸的刻度值就變成了縱向的。 注意使用mar參數(shù)增加橫坐標(biāo)邊空大小。 例如

f <- function(){
    opar <- par(mar=c(8, 4, 2, 0.5)); on.exit(par(opar))
    x <- 1:10
    names(x) <- paste(10000000000 + (1:10))
    barplot(x, las=2)
}
f()

[R語(yǔ)言]手把手教你如何繪圖(萬字)

圖形元素控制

  • pch=16參數(shù)。散點(diǎn)符號(hào),取的數(shù)。
  • lty=2參數(shù)。線型,1為實(shí)線,從2開始為各種虛線。
  • lwd=2參數(shù),線的粗細(xì),標(biāo)準(zhǔn)粗細(xì)為1。
  • col="red"參數(shù),顏色,可以是數(shù)字, 或顏色名字符串如"red","blue"等。 用colors()函數(shù)查詢有名字的顏色。 用rainbow(n)函數(shù)產(chǎn)生連續(xù)變化的顏色。
  • font=2參數(shù),字體,一般font=1是正體,2是粗體, 3是斜體,4是粗斜體。
  • adj=-0.1指定文本相對(duì)于給定坐標(biāo)的對(duì)齊方式。 取0表示左對(duì)齊,取1表示右對(duì)齊,取0.5表示居中。 此參數(shù)的值實(shí)際代表的是出現(xiàn)在給定坐標(biāo)左邊的文本的比例。
  • cex=1.5 繪點(diǎn)符號(hào)大小倍數(shù),基本值為1。

坐標(biāo)軸與坐標(biāo)刻度

  • mgp=c(3,1,0) 坐標(biāo)軸的標(biāo)簽、刻度值、坐標(biāo)軸線 到實(shí)際的坐標(biāo)軸位置的距離,以行高為單位。 經(jīng)常用來縮小坐標(biāo)軸所占的空間, 如mgp=c(1.5, 0.5, 0)。
  • lab=c(5,7,12) 提供刻度線多少的建議, 第一個(gè)數(shù)為x軸刻度線個(gè)數(shù), 第二個(gè)數(shù)為y軸刻度線個(gè)數(shù), 第三個(gè)數(shù)是坐標(biāo)刻度標(biāo)簽的字符寬度。
  • las=1 坐標(biāo)刻度標(biāo)簽的方向。 0表示總是平行于坐標(biāo)軸, 1表示總是水平, 2表示總是垂直于坐標(biāo)軸。
  • tck=0.01 坐標(biāo)軸刻度線長(zhǎng)度,以繪圖區(qū)域大小為單位1。
  • xaxs="s", yaxs="e": 控制x軸和y軸標(biāo)刻度的方法。取"s"(即standard)或"e"(即extended) 的時(shí)候數(shù)據(jù)范圍控制在最小刻度和最大刻度之間。 取"e"時(shí)如果有數(shù)據(jù)點(diǎn)十分靠近邊緣軸的范圍會(huì)略微擴(kuò)大。取值為"i"(即internal)或"r"(此為缺?。?使得刻度線都落在數(shù)據(jù)范圍內(nèi)部,而"r"方式所留的邊空較小。取值設(shè)為"d"時(shí)會(huì)鎖定此坐標(biāo)軸, 后續(xù)的圖形都使用與它完全相同的坐標(biāo)軸, 這在要生成一系列可比較的圖形的時(shí)候是有用的。 要解除鎖定需要把這個(gè)圖形參數(shù)設(shè)為其它值。

圖形邊空

一個(gè)單獨(dú)的圖由繪圖區(qū)域(繪圖的點(diǎn)、線等畫在這個(gè)區(qū)域中)和包圍繪圖區(qū)域的邊空組成, 邊空中可以包含坐標(biāo)軸標(biāo)簽、坐標(biāo)軸刻度標(biāo)簽、標(biāo)題、小標(biāo)題等, 繪圖區(qū)域一般被坐標(biāo)軸包圍。

[R語(yǔ)言]手把手教你如何繪圖(萬字)

邊空的大小由mai參數(shù)或mar參數(shù)控制, 它們都是四個(gè)元素的向量, 分別規(guī)定下方、左方、上方、右方的邊空大小, 其中mai取值的單位是英寸, 而mar的取值單位是文本行高度。 例如:

邊空的大小由mai參數(shù)或mar參數(shù)控制, 它們都是四個(gè)元素的向量, 分別規(guī)定下方、左方、上方、右方的邊空大小, 其中mai取值的單位是英寸, 而mar的取值單位是文本行高度。 例如:

opar <- par(mar=c(2,2,0.5,0.5), 
            mgp=c(0.5, 0.5, 0), tck=0.005)
with(d.class, plot(height, weight, 
                   xlab='', ylab=''))

[R語(yǔ)言]手把手教你如何繪圖(萬字)

par(opar)

一頁(yè)多圖

R可以在同一頁(yè)面開若干個(gè)按行、列排列的窗格, 在每個(gè)窗格中可以作一幅圖。 每個(gè)圖有自己的內(nèi)邊空, 而所有圖的外面可以包一個(gè)“外邊空”。

[R語(yǔ)言]手把手教你如何繪圖(萬字)

一頁(yè)多圖用mfrow參數(shù)或mfcol參數(shù)規(guī)定。 用oma指定四個(gè)外邊空的行數(shù)。 用mtext加outer=T指定在外邊空添加文本。 如果沒有outer=T則在內(nèi)邊空添加文本。 如

opar <- par(mfrow=c(2,2),
            oma=c(0,0,2,0))
with(d.class, {hist(height);
     boxplot(height);
     qqnorm(height); qqline(height);
     plot(height); rug(height,side=2)})
mtext(side=3, text='身高分布', cex=2, outer=T)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

par(opar)

圖形輸出

只要啟用了高級(jí)繪圖函數(shù)會(huì)自動(dòng)選用當(dāng)前繪圖設(shè)備, 缺省為屏幕窗口。

PDF輸出

用pdf函數(shù)可以指定輸出到PDF文件。如

pdf(file='fig-hw.pdf', height=10/2.54,
    width=10/2.54, family='GB1')
with(d.class, plot(height, weight,
                   main='體重與身高關(guān)系'))
dev.off()

用dev.off()關(guān)閉當(dāng)前設(shè)備并生成輸出文件 (如果是屏幕窗口則沒有保存結(jié)果)。

PNG輸出

png(file='fig-hw.png', height=1000, width=1000)
with(d.class, plot(height, weight,
                   main='體重與身高關(guān)系'))
dev.off()

類似地, 用jpeg()函數(shù)啟用JPEG圖形設(shè)備, 用bmp()函數(shù)啟用BMP圖形設(shè)備, 用postscript()函數(shù)啟用PostScript圖形設(shè)備。

包含多種中文字體的圖形

為了使用MS Windows系統(tǒng)字體, 一種辦法是安裝showtext包。 該包替換畫圖時(shí)的添加文本函數(shù)命令, 把文本內(nèi)容替換成多邊形(PDF或PS圖)或點(diǎn)陣(點(diǎn)陣圖)。

需要的工作:

  • 查看Windows的font目錄內(nèi)容,看文件名與字體名的對(duì)應(yīng)關(guān)系。 下面的程序中的列表是我的中文Windows 10的部分中文字體。
  • 找到自己希望使用的中文字體的文件名。
  • 用font.add()命令,增加一套自定義字體family, 一套中可以指定四種:常規(guī)(regular), 粗體(bold), 斜體(italic), 粗斜體(bolditalic)
  • 程序中調(diào)入showtext包并運(yùn)行showtext.auto()命令,這個(gè)命令使得文本命令采用showtext包
  • 用par(family=)指定自定義的字體family。
  • 作圖(主要是PDF)。關(guān)閉圖形設(shè)備。
test.chinese <- function(){
    require(showtext); showtext.auto()

    ## 建立文件名到字體名對(duì)照表
    fmap <- c(
        'msyh'='微軟雅黑常規(guī)',
        'msyhbd'='微軟雅黑粗體',
        'msyhl'='微軟雅黑細(xì)體',
        'simsun'='宋體',
        'simfang'='仿宋',
        'simkai'='楷體',
        'simhei'='黑體',
        'SIMLI'='隸書',
        'SIMYOU'='幼圓',
        'STSONG'='華文宋體',
        'STZHONGS'='華文中宋',
        'STFANGSO'='華文仿宋',
        'STKAITI'='華文楷體',
        'STXIHEI'='華文細(xì)黑',
        'STLITI'='華文隸書',
        'STXINGKA'='華文行楷',
        'STXINWEI'='華文新魏',
        'STCAIYUN'='華文彩云',
        'STHUPO'='華文琥珀'
        )
    fmapr <- names(fmap); names(fmapr) <- unname(fmap)
    cat('==== 字體文件名與字體名稱對(duì)應(yīng):\n')
    print(fmap)
    cat('==== 字體名與字體文件名對(duì)應(yīng):\n')
    print(fmapr)

    ## 找到某個(gè)字體的字體文件
    ## font.name是字體名稱
    find.font <- function(font.name){
        fname <- fmapr[font.name]
        flist0 <- font.files()
        flist1 <- sapply(strsplit(flist0, '[.]'), function(it) it[1])
        flist0[flist1==fname]
    }
    ff1 <- find.font('宋體')
    ff2 <- find.font('黑體')
    ff3 <- find.font('仿宋')
    ff4 <- find.font('隸書');

    font.add('cjk4',
             regular=ff1,
             bold=ff2,
             italic=ff3,
             bolditalic=ff4)
    ##browser()

    pdf('test-chinese.pdf'); on.exit(dev.off())
    par(family='cjk4')
    
    plot(c(0,1), c(0,1), type='n',
         axes=FALSE, xlab='', ylab='')
    text(0.1, 0.9, '正體', font=1)
    text(0.1, 0.8, '粗體', font=2)
    text(0.1, 0.7, '斜體', font=3)
    text(0.1, 0.6, '粗斜體', font=4)
}
test.chinese()

注意:圖形參數(shù)font=1表示正體, font=2表示粗體, font=3表示斜體, font=4表示粗斜體。

其他圖形

相關(guān)系數(shù)圖

用cor(x)可以計(jì)算數(shù)據(jù)框x的各列的相關(guān)系數(shù)陣。 corrgram包的corrgram()函數(shù)可以將相關(guān)系數(shù)陣用圖形表示, 系數(shù)絕對(duì)值大小用色塊顏色深淺表示, 正負(fù)用兩種顏色區(qū)分。

例如, 計(jì)算iris數(shù)據(jù)框中四個(gè)測(cè)量值的相關(guān)系數(shù)并用矩陣表示:

library(corrgram)
R.iris <- cor(iris[,1:4])
print(round(R.iris, 2))  
##              Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length         1.00       -0.12         0.87        0.82
## Sepal.Width         -0.12        1.00        -0.43       -0.37
## Petal.Length         0.87       -0.43         1.00        0.96
## Petal.Width          0.82       -0.37         0.96        1.00
corrgram(
  R.iris, order=TRUE, 
  lower.panel=panel.shade,
   upper.panel = panel.pie,
   text.panel = panel.txt
)

[R語(yǔ)言]手把手教你如何繪圖(萬字)

左下方用顏色代表正負(fù)相關(guān), 藍(lán)色為正相關(guān),紅色為負(fù)相關(guān), 可以看出花萼長(zhǎng)(Sepal.Length)、花瓣寬(Petal.Width)和花瓣長(zhǎng)(Petal.Length)相互為較強(qiáng)的正相關(guān), 但是花萼寬與其它三個(gè)變量為負(fù)相關(guān)。 這個(gè)相關(guān)結(jié)果實(shí)際是虛假的, 因?yàn)闃颖静皇菃我豢傮w而是來自三個(gè)總體。 圖形右上方用陰影部分大小和顏色深度代表相關(guān)系數(shù)絕對(duì)值, 用顏色區(qū)分正負(fù)。

下一篇文章帶大家著重分析ggplot的運(yùn)用

希望能夠幫助到你文章來源地址http://www.zghlxwxcb.cn/news/detail-441311.html

到了這里,關(guān)于[R語(yǔ)言]手把手教你如何繪圖(萬字)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語(yǔ)言初階——手把手教零基礎(chǔ)/新手入門(萬字心得筆記)

    C語(yǔ)言初階——手把手教零基礎(chǔ)/新手入門(萬字心得筆記)

    目錄 前言 一、C語(yǔ)言是什么? 二、開發(fā)環(huán)境 1.編譯器 三、初始C語(yǔ)言 1.第一個(gè)C語(yǔ)言程序 2.數(shù)據(jù)類型 2.1 數(shù)據(jù)類型的長(zhǎng)度 3. 變量 常量 3.1 如何定義變量 3.2?變量的分類? 3.3?變量的作用域和生命周期 3.4常量 1.字面常量 2.const修飾的常變量 ?3.#define定義的標(biāo)識(shí)符常量 4.枚舉常量

    2024年02月03日
    瀏覽(64)
  • 手把手教你實(shí)現(xiàn)一個(gè)循環(huán)隊(duì)列(C語(yǔ)言)

    手把手教你實(shí)現(xiàn)一個(gè)循環(huán)隊(duì)列(C語(yǔ)言)

    這是一道leetcode關(guān)于隊(duì)列的經(jīng)典題: 622.?設(shè)計(jì)循環(huán)隊(duì)列 https://leetcode.cn/problems/design-circular-queue/ ?大家注意這個(gè)題目要求,這個(gè)隊(duì)列是定長(zhǎng)的,如果滿了則不能再添加數(shù)據(jù)。那么我們?cè)O(shè)計(jì)一個(gè)隊(duì)頭front和隊(duì)尾rear,每次添加數(shù)據(jù)rear向后走,這時(shí)就有一個(gè)問題, 怎么區(qū)分空和滿呢

    2024年02月04日
    瀏覽(23)
  • 手把手教你寫出第一個(gè)C語(yǔ)言程序

    手把手教你寫出第一個(gè)C語(yǔ)言程序

    大家好,我是努力學(xué)習(xí)游泳的魚。這篇文章將手把手帶你寫出人生中第一個(gè)C語(yǔ)言程序, Hello, World 。在閱讀本文之前,建議先百度 visual studio ,在微軟官網(wǎng)下載并安裝VS的最新版本,安裝時(shí)記得勾選“C++桌面開發(fā)”選項(xiàng)。 2.1 環(huán)境 工欲善其事必先利其器,我們需要寫C語(yǔ)言代碼

    2024年02月10日
    瀏覽(23)
  • 手把手教你如何使用Docker

    手把手教你如何使用Docker

    我們?cè)诠鹃_發(fā)中,會(huì)有開發(fā)環(huán)境,測(cè)試環(huán)境,上線環(huán)境, 比如我們開發(fā)人員開發(fā)好了一個(gè)項(xiàng)目,在開發(fā)環(huán)境中運(yùn)行正常,但測(cè)試人員拉到測(cè)試環(huán)境就跑不起來【jdk版本等】,或者上線的時(shí)候運(yùn)行不起來,這時(shí)候就要為每個(gè)機(jī)器配置一個(gè)環(huán)境,那運(yùn)維人員不得累死?【哈哈,

    2024年02月10日
    瀏覽(104)
  • 手把手教你如何使用SimiliarWeb

    手把手教你如何使用SimiliarWeb

    在之前的“手把手教你如何使用Google Trends”文章中我們講到從事跨境電商的賣家第一步遇到的問題是“客戶在哪里?”該如何推廣我的產(chǎn)品?因此若想自己的店鋪?zhàn)龃笞龊?,則需要工具來幫助分析市場(chǎng)行情,根據(jù)市場(chǎng)行情調(diào)整自己的業(yè)務(wù)狀況。小編在上篇中已經(jīng)講解了三個(gè)特

    2024年02月09日
    瀏覽(103)
  • 數(shù)據(jù)庫(kù):如何安裝SQL,手把手教你

    數(shù)據(jù)庫(kù):如何安裝SQL,手把手教你

    我們只選擇兩個(gè): SQLEXPR_x64_CHS.exe SQLManagementStudio_x64_CHS.exe 如果你是32位系統(tǒng)就選擇x86的(9102年了,應(yīng)該都是64位的了吧)選中后下載到你經(jīng)常保存文件的地方即可(這個(gè)地方并不是sql要安裝的地方)。 全部下載后如圖所示 正式安裝 先安裝SQL,再安裝 SQL Management Studio 雙擊

    2024年01月16日
    瀏覽(162)
  • 手把手教你如何使用Fiddler抓包工具

    手把手教你如何使用Fiddler抓包工具

    什么是 Fiddler? Fiddler 是一個(gè) HTTP 協(xié)議調(diào)試代理工具,它能夠記錄并檢查所有你的電腦和互聯(lián)網(wǎng)之間的 HTTP 通訊。Fiddler 提供了電腦端、移動(dòng)端的抓包、包括 http 協(xié)議和 https 協(xié)議都可以捕獲到報(bào)文并進(jìn)行分析;可以設(shè)置斷點(diǎn)調(diào)試、截取報(bào)文進(jìn)行請(qǐng)求替換和數(shù)據(jù)篡改,也可以進(jìn)行

    2024年02月07日
    瀏覽(92)
  • Java基礎(chǔ)--手把手教你如何從鍵盤錄入信息

    Java基礎(chǔ)--手把手教你如何從鍵盤錄入信息

    從鍵盤錄入信息 Scanner 有掃描儀的意思,sc是自己取的名字(有的人喜歡用input), new Scanner 是創(chuàng)建一個(gè)Scanner對(duì)象, System.in 代表電腦的鍵盤。 即,掃描電腦的鍵盤。 將第一步寫完,我們?cè)诰幾g器里面看到, Scanner 標(biāo)紅了,報(bào)錯(cuò)了! ? 為啥報(bào)錯(cuò)呢? 我們要使用 Scanner ,需要

    2024年02月11日
    瀏覽(25)
  • 手把手教你如何擴(kuò)展(破解)mybatisplus的sql生成

    眾所周知, mybatisplus 提供了強(qiáng)大的代碼生成能力,他默認(rèn)生成的常用的CRUD方法(例如插入、更新、刪除、查詢等)的定義,能夠幫助我們節(jié)省很多體力勞動(dòng)。 他的 BaseMapper 中定義了這些常用的CRUD方法,我們?cè)谑褂脮r(shí),繼承這個(gè) BaseMapper 類就默認(rèn)擁有了這些能力。 如果我們

    2024年02月05日
    瀏覽(90)
  • 手把手教你如何正確永久使用Microsoft Office365?

    手把手教你如何正確永久使用Microsoft Office365?

    office2019和office 365有什么區(qū)別的呢?為什么越來越多的人更加鐘愛office365。簡(jiǎn)單來說office 2019的零售版本屬于一次售出永久使用,價(jià)格上比較貴,而且功能上也不會(huì)再有更新。而office 365是一種基于云的訂閱服務(wù),我們花錢買的是一定時(shí)期的服務(wù),在使用期間我們可以獲得offi

    2024年02月07日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包