1. 程式人生 > >在R中使用plot,qplot,ggplot三個函式做簡單的常用圖形

在R中使用plot,qplot,ggplot三個函式做簡單的常用圖形

R自帶的作圖工具有plot,但是在使用R作圖時,不得不提到的一個強大的包ggplot2。ggplot2中qplot和ggplot函式也可以用來作圖。下面會一一介紹在R中使用這些函式來製作散點圖(scatter plot)、線圖(line plot)、條形圖(bar graph)、柱狀圖(histogram)、密度圖(density)和箱線圖(boxplot)。(上述圖形時做資料分析時常用到的,相關概念百度或者wiki搜尋都有。)

1. Scatter plot散點圖(使用資料集:mtcars)

資料集中wt是車身重量,mpg是每英里使用多少加侖的汽油

plot(mtcars$wt,mtcars$mpg
)

最簡單的散點圖,粗糙標題都沒有~
plot的使用格式:plot(x, y, …),x引數指圖中x座標軸的座標,y引數指圖中y座標軸的座標,…指還有其他可用的引數。

qplot(wt,mpg,data=mtcars)

這裡寫圖片描述
qplot的使用格式:qplot(x, y = NULL, data,…),data引數指所用到的資料集。(這裡也可以使用這種形式:qplot(mtcars$wt,mtcars$mpg)

ggplot(mtcars,aes(wt,mpg))+geom_point()

這裡寫圖片描述
ggplot這個函式使用起來比較特別,可以看成這種格式:ggplot(所用到的資料)+geom_要繪製的圖形型別()+…(可以加多個想要繪製的圖形型別)。
ggplot()個人建議大家使用,另外兩個能看的懂就好了。

2. Line plot線圖(使用資料集:pressure)

pressure資料集就兩列temperature和pressure。

plot(pressure$temperature,pressure$pressure,type='l')

這裡寫圖片描述
前面提到,…是還可以使用其他引數,這就就用了一個type引數來選擇想要繪製的圖形,沒有選擇type引數預設是點圖。
type引數可選擇的圖形有:

符號 繪製的表格
p 點圖
l 線圖
b 點圖與虛線圖
c 虛線圖
o 點圖與實線圖
h 直線條形圖
s 階梯圖
還有兩個 不寫了,自己看幫助文件?plot
points(pressure$temperature,pressure$pressure)

這裡寫圖片描述
這個方法瞭解即可。

qplot(temperature,pressure,data = pressure,geom = 'line')

這裡寫圖片描述

qplot(temperature,pressure,data = pressure,geom = c('line','point'))

這裡寫圖片描述
qplot函式做簡單的圖形比較方便。geom引數還可以引用列表。

ggplot(pressure,aes(temperature,pressure))+geom_line()+geom_point()

這裡寫圖片描述
ggplot函式用起來會比qplot函式複雜點(qplot的q就是quick),但是它的程式碼看起來比較直觀,容易理解。

3.Bar graph條形圖(資料集:mtcars&BOD)

BOD資料集只有兩列time和demand(需要的氧氣量)
條形圖是顯示資料頻數的圖,所以我們要用資料框中的資料生成一個統計頻數的表。

t<-table(mtcars$cyl)

cyl是車子汽缸數量得到表格如下:

汽缸數 車子數量
4 11
6 7
8 14
barplot(t)

這裡寫圖片描述

ggplot(BOD,aes(Time,demand))+geom_bar(stat = 'identity')

這裡寫圖片描述
stat=’identity’y意為不對資料做統計運算,如果這裡沒有這步會報錯。為什麼會這樣希望有人能點撥我一下~
這裡新版本的R不能用gplot做條形圖。

4.Histogram直方圖(資料集:mtcars)

hist(mtcars$mpg)

這裡寫圖片描述

qplot(mpg,data = mtcars,binwidth=4)
ggplot(mtcars,aes(mpg))+geom_histogram(binwidth = 4)

這裡寫圖片描述
binwidth引數是調節橫座標的區間,你可以任意調節你認為合適的區間。條形圖與直方圖看起來相似,但是卻是不一樣的,條形圖的x軸是一個確定的數值,而直方圖是一個區間。

5.Density密度圖(資料集:mtcars)

plot(density(mtcars$mpg))

這裡寫圖片描述
如果就輸入density(mtcars$mpg) 會發現只會輸出相關的統計資料。

qplot(mpg,data = mtcars,geom = 'density')
ggplot(mtcars,aes(mpg))+geom_density()

這裡寫圖片描述

6.Boxplot箱線圖(資料集:ToothGrowth)

箱線圖可以檢視異常值,如果有觀察超出上下邊界,那麼就是異常值。

plot(ToothGrowth$supp, ToothGrowth$len)

這裡寫圖片描述
plot函式能自動識別分類的字串。

boxplot(len~supp,data = ToothGrowth)

這裡寫圖片描述

qplot(supp,len,data=ToothGrowth,geom = 'boxplot')
ggplot(ToothGrowth,aes(supp,len))+geom_boxplot()

這裡寫圖片描述
以上都是最基礎的作圖方法,後續還可以改變引數來進行微調。