在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()
以上都是最基礎的作圖方法,後續還可以改變引數來進行微調。