qplot() 快速作圖
#準(zhǔn)備工作
library("ggplot2")
set.seed(1410)
dsmall <- diamonds[sample(nrow(diamonds), 100), ]
qplot(x, y, data)
data參數(shù)可選,如果進(jìn)行了指定,那么qplot()將會(huì)首先在該數(shù)據(jù)框內(nèi)查找變量名,然后再在R的工作空間中進(jìn)行搜索
qplot(carat, price, data = diamonds)
qplot(log(carat),log(price),data = diamonds)
qplot(carat, price, data = dsmall, color = color)
qplot(carat, price, data = dsmall, shape = cut)
I()手動(dòng)設(shè)定圖形屬性
alpha,創(chuàng)建半透明顏色,取值從0(完全透明)到1(完全不透明),通常透明度可采用分?jǐn)?shù)形式進(jìn)行表示
分母表示經(jīng)過多少次重疊后顏色將不再透明
qplot(carat, price, data = diamonds, alpha = I(1/200))
geom = “point”繪制散點(diǎn)圖,是指定了x和y后的默認(rèn)設(shè)置
geom = “smooth”將擬合一條平滑曲線,并將曲線和標(biāo)準(zhǔn)誤展示在圖中
geom = “boxplot”可以繪制箱線胡須圖,用以概括一系列點(diǎn)的分布情況
geom = “path”和“l(fā)ine”可以在數(shù)據(jù)點(diǎn)之間繪制連線。這類圖的傳統(tǒng)的作用是探索時(shí)間和其他變量之間的關(guān)系
但連線同樣可以用其他方式將數(shù)據(jù)點(diǎn)連接起來
geom = “histogram”直方圖
geom = “freqpoly”繪制頻率多邊形
geom = “density” 繪制密度曲線
如果只有x參數(shù)傳遞給qplot(),那么直方圖幾何對(duì)象就是默認(rèn)的選擇
對(duì)于離散變量,geom = “bar”,繪制條形圖
qplot(carat, price, data = dsmall, geom = c("point", "smooth"))
若不想要灰色的置信區(qū)域,可以設(shè)置se = FALSE
利用method可以選擇不同的平滑器
span參數(shù)控制的是曲線的平滑程度,從0(很不平滑)到1(非常平滑)
method = "loess",當(dāng)n較小時(shí)是默認(rèn)選項(xiàng),使用的是局部回歸的方法
loess對(duì)于大數(shù)據(jù)并不十分適用,當(dāng)n超過1000時(shí)會(huì)采用另一種平滑算法
可以使用method = "gam", formula = y ~ s(x)來調(diào)用mgcv包擬合一個(gè)廣義可加模型
對(duì)于大數(shù)據(jù),請使用公式y ~ s(x, bs = "cs")
library(mgcv)
qplot(carat, price, data = dsmall, geom = c("point", "smooth"),
method = "gam", formula = y ~ s(x))
qplot(carat, price, data = dsmall, geom = c("point", "smooth"),
method = "gam", formula = y ~ s(x, bs = "cs"))
method = "lm"擬合的是線性模型,默認(rèn)情況下是一條直線,但可以通過指定formula = y ~ poly(x,2)來擬合一個(gè)二次多項(xiàng)式
加載splines包使用自然樣條,formula = y ~ ns(x,2)
第二個(gè)參數(shù)為自由度,自由度越大,曲線的波動(dòng)也越大
method = "rlm"與lm類似,但采用更穩(wěn)健的擬合算法,使得結(jié)果對(duì)異常值不太敏感,需加載“MASS”包
擾動(dòng)點(diǎn)圖geom = “jitter",箱線胡須圖geom = "boxplot"
對(duì)于箱線圖,可以用color控制外框顏色,fill設(shè)置填充顏色,以及size調(diào)節(jié)線的粗細(xì)
qplot(color, price/carat, data = diamonds,
geom = "jitter", alpha = I(1/50))
geom = "histogram"直方圖,binwidth控制組距
geom = “density”密度曲線,adjust控制曲線平滑程度(取值越大越平滑)
某個(gè)分類變量被映射到某個(gè)圖形屬性上,幾何對(duì)象就會(huì)自動(dòng)按這個(gè)變量進(jìn)行拆分
qplot(carat, data = diamonds, geom = "density", colour = color)
qplot(carat, data = diamonds, geom = "histogram", fill = color)
條形圖與直方圖類似
qplot(color, data = diamonds, geom = "bar")
若想用其他方式對(duì)數(shù)據(jù)進(jìn)行分組處理,可以使用weight幾何對(duì)象
qplot(color, data = diamonds, geom = "bar",
weight = carat)++ scale_y_continuous("carat")
時(shí)間序列中的線條圖和路徑圖
線條圖從左到右連接,x軸一般是時(shí)間,展示了單個(gè)變量隨時(shí)間變化的情況
路徑圖展現(xiàn)了兩個(gè)變量隨時(shí)間聯(lián)動(dòng)的情況,時(shí)間反映在點(diǎn)的順序上
qplot(date, unemploy/pop, data = economics, geom = "line")
失業(yè)率和失業(yè)時(shí)間長度隨時(shí)間變化的路徑,為使時(shí)間方向明顯,我們將年份映射到color屬性上
year <- function(x) as.POSIXlt(x)$year + 1900
#as.POSIXlt(x)$year是時(shí)間轉(zhuǎn)換的一種格式,年代從1900年算起。
qplot(unemploy/pop, uempmed, data = economics,
geom = "path", color = year(date) )
facets分面參數(shù),將圖形拆分成若干個(gè)窗格,可以通過形如row_var ~ col_var的表達(dá)式進(jìn)行指定
若想指定一行或一列,可以使用.作為占位符,列如row_var ~ .創(chuàng)建一個(gè)單列多行的圖形矩陣
..density..,表示將密度而不是頻數(shù)映射到y(tǒng)軸
qplot(carat, ..density.., data = diamonds, facets = color ~ .,
geom = "histogram", binwidth = 0.1, xlim = c(0, 3))
xlim,ylim:設(shè)置x軸和y軸的顯示區(qū)間,取值為長度為2的數(shù)值向量,如x = c(0,20)
log:表示對(duì)某個(gè)坐標(biāo)軸(如果有的話)取對(duì)數(shù),如log = "x"即對(duì)x軸取對(duì)數(shù)log = "xy",表示對(duì)x軸和y軸同時(shí)取對(duì)數(shù)
main:圖形的主標(biāo)題,放置在圖形的頂端中部,該參數(shù)可以是一個(gè)字符串或一個(gè)表達(dá)式
xlab,ylab:設(shè)置x軸和y軸的標(biāo)簽文字