《ggplot2:數據分析與圖形藝術》,讀書筆記


第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=FASLE
geom=“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、整合
 
 
 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM