#ggplot2 之從qplot 開始
qplot 是包ggplot2 中的一個快速畫圖函數,如果你已經對R 的基礎包畫圖函數plot基本掌握,那麼qplot 就很容易掌握了。
install.packages(‘ggplot2’) #安裝ggplot2包
library(ggplot2) #加載ggplot2包
set.seed(1410) #設置隨機種子
dsmall <- diamonds[sample(nrow(diamonds), 100), ] #由於數據集diamonds 數據量大,爲了方便畫圖,從中抽取 100個小樣本。
qplot 的一些參數如下:
qplot(x, y = NULL, …, data, facets = NULL, margins = FALSE, geom = “auto”, stat = list(NULL),
position = list(NULL), xlim = c(NA, NA), ylim = c(NA, NA), log = “”, main = NULL, xlab =
deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA)
常用參數:
參數 | 說明 |
---|---|
x | x的值 |
y | y的值(可以爲空) |
data | 指定數據框,如果未指定則從當前環境中提取向量 |
facets | 按某個類別分組,在一個畫板上同時畫出多個圖形 |
log | 字符型向量,說明哪一個座標軸應該取對數。如log='x’表示取x 軸的對數,log='xy’表示取x、y 軸對數。 |
xlim、ylim | 限制x、y 軸顯示區間 |
main | 設置主標籤,位於圖形頂部中間 |
xlab、ylab | x、y 軸標籤 |
asp | 設置圖形高與寬的比例 |
colour | 設置點、線的顏色 |
shape | 設置點、線的類型 |
size | 設置點、線的大小 |
alpha | 設置圖形透明度 |
fill | 設置圖形填充色,如箱線圖、直方圖的填充色 |
… | … |
geom的值 | 說明 |
---|---|
‘point’ | 繪製散點圖 |
‘smooth’ | 擬合一條平滑曲線,並將曲線與標準誤差展現在圖中 |
‘boxplot’ | 繪製箱線圖 |
‘path’或’line’ | 在數據點之間畫連線。'line只能畫從左到右的連續;而’path’可以是任意方向 |
‘histogram’ | 繪製直方圖 |
‘freqpoly’ | 繪製頻率多邊形 |
‘density’ | 繪製密度曲線圖 |
‘bar’ | 繪製條形圖 |
… |
注意:對於不同類型圖形,有些參數可能會有所不同,具體視情況而定。
繪製鑽石重量carat 與價格price 的散點圖:
qplot(carat, price, data = dsmall)
運用 colour 參數把顏色屬性 color 映射到圖中,不同顏色的鑽石用不同顏色的點來
反映:
qplot(carat, price, data = dsmall, colour = color)
運用參數shape 把鑽石質量cut 屬性映射到圖中,可以看出不同質量的鑽石用不同
類型的點來表示:
qplot(carat, price, data = dsmall, shape = cut)
參數log 可以用於對指定的座標軸取對數,log=’x’表示對x 軸取對數,log=’y’表示對
y 軸取對數,log=’xy’表示對x 與y 軸都取對數:
qplot(carat, price, data = dsmall, colour = color, log = 'xy')
增加擬合線
qplot(carat, price, data = dsmall, log = 'xy', geom = c('point', 'smooth'))
運用參數size 把鑽石質量cut 屬性映射到點的大小,可以看出鑽石質量越好,點
越大:
qplot(carat, price, data = dsmall, colour = color, size = cut)
參數alpha 可以用於設置圖形的透明度:
qplot(carat, price, data = diamonds, alpha = I(1/5))
qplot(carat, price, data = diamonds, alpha = I(1/50))
qplot(carat, price, data = diamonds, alpha = I(1/200))
運用參數 geom=’line’繪製線圖,對於不同顏色的鑽石用不同顏色反映,參數linetype
是線的類型:
qplot(carat, price, data = dsmall, linetype = color, colour = color, geom='line')
按鑽石不同質量 cut 分類,繪製其重量 carat 的箱線圖,箱線圖用不同顏色填充;參
數colour 是用於設定箱線圖的線的顏色,而 fill 是其填充色:
qplot(cut, carat, data = dsmall, geom = 'boxplot', fill = cut)
qplot(cut, carat, data = dsmall, geom = 'boxplot', colour = cut)
對於直方圖而言,binwidth 參數用於設定組距來調節平滑度:
qplot(carat, data = diamonds, geom = 'histogram', binwidth = 1, xlim = c(0, 3))
qplot(carat, data = diamonds, geom = 'histogram', binwidth = 0.1, xlim = c(0, 3))
qplot(carat, data = diamonds, geom = 'histogram', binwidth = 0.01, xlim = c(0, 3))
當我們需要按某個數據屬性分組繪圖時,要求在同一個畫板上畫多個圖形,可以用facets 參數實現。
facets = | 說明 |
---|---|
row_var~col_var | 按row_var屬性與col_var 屬性分組輸出圖形矩陣 |
row_var~. | 按row_var屬性分組,圖形只按一列輸出 |
.~col_var | 按col_var屬性分組,圖形只按一行輸出 |
按鑽石color 屬性分組,繪製鑽石重量carat 的直方圖,並按照一列輸出(下圖左);
增加參數…density…可以畫出其頻率圖(下圖右):
qplot(carat, data = diamonds, facets = color ~ ., geom = 'histogram', binwidth = 0.1, xlim =
c(0, 3)) #左圖
qplot(carat, ..density.., data = diamonds, facets = color ~ ., geom = 'histogram', binwidth =
0.1, xlim = c(0, 3)) #右圖
按鑽石color 與cut 兩個屬性分組,繪製鑽石重量carat 的直方圖,輸出一個圖形矩
陣:
qplot(carat, data = diamonds, facets = color ~ cut, geom = 'histogram', binwidth = 0.1, xlim =
c(0, 3))
歡迎訪問我的個人站點:http://bgods.cn/