第1章 簡介
1.3圖形的語法
第2章從qplot開始入門
1、基本用法:qplot(x,y,data)
x是自變量橫軸,y是因變量縱軸,data是數據框
2、圖形參數
colour=I("red"),shape
,
size=I(2)
,alpha=I(1/20)
colour是(外框)顏色,fill是填充顏色,
shape是點的形狀
,適合描述分類變量:形狀和顏色
size是點的大小
,適合描述連續變量:大小和顏色
alpha是點的透明度,1/20說明20個重疊在一起就會變得不透明,可以用來觀察點的密集區域
3、幾何對象geom=c("point","smooth")按順序堆疊,按數據維度可划分為:
- 二維變量關系:
geom=“point”:繪制散點圖geom=“smooth”:擬合一條平滑曲線,灰色區域是置信區間,不繪制標准誤差則se=FASLEgeom=“boxplot”:繪制箱線胡須圖,概括一系列點的分布情況geom=“path” 和 geom=“line”:在數據點之間繪制連線,一般用來探索時間和其他變量之間的關系,線條圖只能創建從左到右的連線,而路徑圖則可以是任意方向
- 一維分布:集合對象由變量類型決定
- 連續變量:
geom=“histogram”:直方圖(默認)geom=“freqpoly”:頻率多邊形geom=“density”:密度曲線
- 離散變量:
geom=“bar”:條形圖
3.1 平滑曲線geom= “smooth” 具體參數默認灰色區域是置信區間,設置se=FALSE將不繪制標准誤method參數,選擇不同的平滑器:
- method=“loess”,span=0。1:局部回歸方法,曲線的平滑程度由span控制,內存消耗為O(n2),當n超過1000時將采用別的平滑算法。n較小時是默認選項
- method=“gam”,formula=y~s(x):mgcv包擬合廣義加性模型。與lm的樣條類似,但樣條的階數是通過數據估計得到的。對於大數據(n>1000)使用y~s(x,bs=“cs”)
- method=“lm”:線性模型,默認是一條直線,可通過formula=y~poly(x,2)擬合二次多項式,也可加載splines包使用樣條曲線formula=y~ns(x,2),第二個參數是自由都,取值越大,曲線的波動越大
- method=“rlm”:MASS包,和lm類似,但采用更穩健的擬合算法,使得對異常值不太敏感
3.2 箱線圖和擾動點圖:研究 連續變量隨着分類變量的變化情況
- geom=“jitter”:擾動點圖
- geom=“boxplot”:箱線胡須圖,反映中位數等。可以配合使用colour、fill和size等
3.3 直方圖和密度曲線圖:展示單個變量的分布( 連續變量)
- 一般繪制
geom=“histogram”直方圖,binwidth設定組距(組距大反映總體特征),break可以顯示指定切分位置geom=“density”:密度曲線圖,adjust控制曲線的平滑程度(adjust越大曲線越平滑)
- 增加 分類型變量 控制
參數colour或者fill根據設定分類變量時,幾何對象會自動拆分,並繪制多條密度曲線圖或直方圖3.4條形圖geom=“bar”( 離散變量)
- 普通條形圖
- 增加 連續變量 權重: weight
3.5時間序列中的線條圖和路徑圖
- geom=“line”:線條圖,按x的取值排序(一般橫軸是時間),從左到右連接
- geom=“path” :路徑圖,任意原始順序連接(點的順序反映先后時間):colour參數設置時間來反映
group設置多個序列個體,並映射到一張圖中(4.5.3節)
4、分面:facets 將圖形拆分成多個窗格(7.2節)
facets=row.var.name~.:單列多行
facets=row
.var.name
~col
.var.name
:多行多列
“..density..”——新語法,將密度而不是頻數映射到y軸
5、其他參數
main——標題
xlab,ylab——橫縱坐標軸標題。如ylab=expression(frac(y,x))=y/x
xlim,ylim——
橫縱坐標軸取值范圍,如c(.2,1)
log——log=“xy”或者log=“x”設置某個坐標取對數
第9章 數據操作
9.1 plyr包簡介
- 分組變量:用一張圖內的數據分成幾個部分處理
- 分面變量:用來把數據分割成幾個部分,每個部分分別畫在一張小圖里
ddply(.data,.variable,.fun)——針對多個子集,應用對單獨子集的操作函數
- subset()——用來對數據取子集
ddply(diamonds,.(color),subset,order(carat)<=2) #選取各個顏色里最小的2顆鑽石
- transform()——用來進行數據變換
ddply(diamonds,.(color),transform,price=scale(price)) #每個顏色 組 里鑽石的價格標准化
- colwise()——把一個處理向量的函數變為處理每列數據框
colwise(func)func(<data.frame>)或者colwise(func)(<dataframe>)
- numcolwise()——只對數值類型的列操作
- catcolwise()——只對分類類型的列操作
9.2“寬數據”變為“長數據”
melt()——變量不再放在各個列上,而是排成一列,每個變量都分別占其中的幾行。reshape2包
data是待變形的元數據id.vars依舊放在列上位置保持不變的變量,該值通常是離散的,類似數據庫中的主鍵measure.vars需要被放在同一列的變量,不同變量放在同一列並根據變量名進行分組。
- 多重時間序列圖
在一張圖上畫2個時間序列:
1、畫圖時把兩個變量放在兩個不同的圖層上2、把數據變成一個“長數據”,然后根據variable變量區分
分析:由於兩個時間序列取值差異太大,常常會導致其中一個序列值趨近一條直線改進方法:
1、把數值調整到相同范圍:做極差正規化變換2、使用自由標度的分面qplot(date,value,data=emp,geom="line")+facet_grid(variable~.,scale=“free_y”)![]()
- 平行坐標圖
每個樣本畫一條曲線時(需要保證樣本取值可比),將行名rowname作為分組變量,同時結合大數據作圖方法(
透明度
和
聚類)
9.3 ggplot()方法
主要思想:將數據變形和圖形展示盡可能分開進行,而不必讓畫圖局限在某些特殊函數里。ggplot負責繪圖,fortify()負責數據變形
ggplot是一種泛型函數,只提供作圖所需要的工具。
- 線性模型
- 編寫自己的方法
其它:
第4章:
1、圖形屬性映射:aes(x=x,y=y,colour=z)圖形屬性參數
2、統計變換
3、位置調整
4、整合
