第二篇:数据可视化 - 基本API
前言
? ? ? ?數(shù)據(jù)可視化是數(shù)據(jù)挖掘非常重要的一個(gè)環(huán)節(jié),它不單在查閱了解數(shù)據(jù)環(huán)節(jié)使用到,在整個(gè)數(shù)據(jù)挖掘的流程中都會(huì)使用到。
? ? ? ?因?yàn)閿?shù)據(jù)可視化不單可以形象地展示數(shù)據(jù),讓你對(duì)數(shù)據(jù)有更好的總體上的了解,而且還可以讓你清晰的將自己的觀點(diǎn)表述出來(lái)。因此不僅僅是在項(xiàng)目實(shí)施環(huán)節(jié),在與客戶談需求或者寫(xiě)論文時(shí),數(shù)據(jù)可視化也能幫到你。
? ? ? ?但在介紹統(tǒng)計(jì)圖的具體繪制之前,先來(lái)看看兩個(gè)基本的圖像繪制函數(shù)plot和legend。
繪圖基礎(chǔ)函數(shù) - Plot
? ? ? ?在R語(yǔ)言中,plot是基本的用來(lái)繪制點(diǎn)和線段的函數(shù)。
? ? ? ?最基本的調(diào)用方式為:plot (x軸數(shù)據(jù), y軸數(shù)據(jù))。然而plot還提供了很多參數(shù)供以優(yōu)化:
pch:用于顯示點(diǎn)的坐標(biāo),可以是一個(gè)字符,也可以是0到25的一個(gè)整數(shù)。如:pch=“+”,pch=1
lty:線條類型。如:lty=2,lty=1
lwd:線條寬度。如:lwd=2
col:點(diǎn),線,文本,填充區(qū)域的顏色設(shè)置,col.axis, col.sub, col.main分別對(duì)應(yīng)坐標(biāo)軸標(biāo)注,子標(biāo)題,主標(biāo)題顏色。如col=2, col.sub=2
font:字體設(shè)置。同上
cex:字符擴(kuò)張率,這個(gè)值表示期望字符(包括繪圖字符)大小相對(duì)默認(rèn)大小的比率。
xlim和ylim:表示x軸和y軸的長(zhǎng)度,如:plot(passign, type="l", xlim=c(0,100))就表示x軸坐標(biāo)是從0到一百。
add=TRUE 強(qiáng)制函數(shù)以低級(jí)繪圖函數(shù)的形式運(yùn)行,在當(dāng)前的圖上加載新的圖形元素(僅適合于部分函數(shù))。
axes=FALSE 禁止產(chǎn)生坐標(biāo)軸|當(dāng)你想用函數(shù)axis() 繪制個(gè)性化的坐標(biāo)軸時(shí)非常有用。默認(rèn)值是axes=TRUE,表示產(chǎn)生坐標(biāo)軸
log:log="x",log="y", log="xy"讓x 軸,y 軸或者兩者都成為對(duì)數(shù)坐標(biāo)軸,這對(duì)很多圖都有效,但不是全部。
type= 參數(shù)type= 控制輸出圖形(特別是線條)的類型:
type="p" 只顯示點(diǎn)(默認(rèn))
type="l" 顯示線條
type="b" (同時(shí))顯示點(diǎn)和線
type="o" 將點(diǎn)覆蓋在線上
type="h" 繪制從點(diǎn)到零軸(x 軸)的垂直線(高密度(high-density))
type="s"
type="S" 步階圖。第一種形式,垂直線頂部匹配數(shù)據(jù)點(diǎn);第二種形式,底部匹配。
type="n" 圖形不顯示。但是坐標(biāo)軸仍然顯示(默認(rèn)),并且坐標(biāo)依然以數(shù)據(jù)設(shè)定。這個(gè)非常適合隨后用低級(jí)繪圖函數(shù)畫(huà)圖。
xlab=string/ylab=string:設(shè)定x 和y 軸的標(biāo)簽。可以用這些參數(shù)修改默認(rèn)標(biāo)簽。默認(rèn)標(biāo)簽常常是用于高級(jí)繪圖函數(shù)中的對(duì)象的名字。
? ? ? ?在plot函數(shù)的基礎(chǔ)之上,可以畫(huà)點(diǎn),畫(huà)線,添加文本。畫(huà)點(diǎn)和畫(huà)線的函數(shù)分別為points和lines函數(shù),其調(diào)用方式比較簡(jiǎn)單,這里不再細(xì)說(shuō)。
? ? ? ?下面再來(lái)介紹另一個(gè)重要的繪圖函數(shù)。
繪圖基礎(chǔ)函數(shù) - legend
? ? ? ?legend(x, y, legend, ...)用來(lái)在當(dāng)前圖的特定位置增加圖例(legend)。標(biāo)識(shí)字符,線條格式,顏色等都是被字符向量legend中的標(biāo)簽所注釋。另外一個(gè)含有畫(huà)圖單位對(duì)應(yīng)值的參數(shù)v (一個(gè)和legend 長(zhǎng)度一致的向量)是必須給定的:
legend( , fill=v)
- 填充盒子的顏色
legend( , col=v)
-?點(diǎn)或者線條的顏色
legend( , lty=v)
-?線條樣式
legend( , lwd=v)
-?線條寬度
legend( , pch=v)
-?標(biāo)識(shí)字符(字符向量)
直方圖
? ? ? ?
? ? ? ?使用hist函數(shù)可以繪制出某列變量的直方圖,效果如上圖所示。它是保險(xiǎn)索賠數(shù)據(jù)庫(kù)中索賠金額的直方分布圖。
? ? ? ?該圖的函數(shù)調(diào)用代碼為:
? ? ? ?? ??
hist函數(shù)有以下幾個(gè)參數(shù):
- 首參:數(shù)據(jù)向量
- density:直方圖陰影系數(shù)。值越大陰影度越高。
- main:直方圖標(biāo)題名。如上圖的"Histogram of Freq of Insurance$Claims"。
- xlab:橫軸名
- ylab:縱軸名
- col,border:直方圖的顏色以及邊界顏色。可自定義色調(diào)風(fēng)格,但是與density參數(shù)互斥。
- break:分組間距
條形圖
? ? ? ?
? ? ? ?該圖是保險(xiǎn)索賠數(shù)據(jù)集中索賠人年齡的條形分布圖。
? ? ? ?可見(jiàn),條形圖與直方圖比較相似,但它的特點(diǎn)是需要定制每個(gè)區(qū)間,因?yàn)檫@些區(qū)段之間表達(dá)的意義也許是沒(méi)有任何聯(lián)系的。同時(shí),它可以很好地處理非數(shù)值型的數(shù)據(jù)統(tǒng)計(jì)。因此,這種圖形的使用頻率也相當(dāng)高,應(yīng)當(dāng)引起重視。
? ? ? ?一般來(lái)說(shuō),繪制條形圖需要以下兩個(gè)步驟:
1. 生成統(tǒng)計(jì)向量。也就是說(shuō),每個(gè)條形表示的值具體是多少。
本例中的調(diào)用代碼為:
? ? ? ?
? ? ? ?生成的向量為索賠人年齡在各個(gè)區(qū)間內(nèi)的人數(shù)。
? ? ? ?2. 進(jìn)行繪制。
? ? ? ?調(diào)用代碼為:
? ? ? ?
? ? ? ?barplot函數(shù)有以下幾個(gè)參數(shù):
- 首參:數(shù)據(jù)向量,這個(gè)常常需要自行計(jì)算來(lái)定制。
-?names.arg:各條形的名字
-?density,main,xlab,ylab,col,denstity:意義同直方圖。不過(guò)col,denstity參數(shù)為向量格式 - 為了分別定制每個(gè)條形。
-?besides:是繪制分組條形圖,還是堆疊條形圖。該參數(shù)的具體使用下面會(huì)說(shuō)。
需要特別說(shuō)明的是,柱狀圖更為常用的地方在于繪制分組條形圖,如下圖所示:
? ? ? ?
? ? ? ?要繪制這種條形圖,在上圖的基礎(chǔ)上,需要作出如下的改動(dòng):
? ? ? ?1. 生成兩組統(tǒng)計(jì)向量,并將它們通過(guò)函數(shù)rbind給綁定起來(lái):
? ? ? ?
? ? ? ?2. 在繪制函數(shù)barplot中,加入?yún)?shù)設(shè)定beside=TRUE:
? ? ? ?
? ? ? ?如果不加的話會(huì)自動(dòng)生成疊加風(fēng)格的條形圖:
? ? ? ?
? ? ? ?3. 最后,在圖的左上方加上這不同兩個(gè)條形的具體意義:
? ? ? ?
?餅圖
? ? ? ?
? ? ? ?本例子展示的是一個(gè)3D圖。它需要使用一個(gè)新的包plotrix。餅圖的繪制比較簡(jiǎn)單,調(diào)用代碼示例如下:
? ? ? ?
? ? ? ?主要說(shuō)明的是如下兩個(gè)參數(shù):
? ? ? ?- explode:這個(gè)參數(shù)就是各個(gè)餅成員之間的間距
? ? ? ?- labelcex:各個(gè)餅之間的縫隙大小
? ? ? ?其他參數(shù)和前面幾個(gè)圖的繪制函數(shù)的差不多,不再累述了。
中文字符兼容性解決方案
? ? ? ?在導(dǎo)出為高清pdf格式的時(shí)候,有時(shí)候會(huì)有中文字符不兼容的問(wèn)題。解決方案為:
1. 安裝Cario軟件包并加載
2. 調(diào)用函數(shù)CairoPDF("PDF完整路徑名")指定PDF文件保存路徑及文件名
3. 在調(diào)用繪圖函數(shù)時(shí)加上一個(gè)新的參數(shù) family = "字體名"。字體參數(shù)表見(jiàn)文章尾部。
4. 語(yǔ)句dev.off執(zhí)行保存
? ? ? ?下面是一段保存高清pdf的代碼示例:
library(Cairo) CairoPDF("f:\\1.pdf") pie3D(Claims_Age, labels=c("<25", "25-29", "30-35", ">35"), explode = 0.1, labelcex = 0.8, main = "中文字符", col = c("green", "blue", "orange", "yellow"), family = "SimSun") dev.off()小結(jié)
? ? ? ?R語(yǔ)言還支持很多類型的圖,有些復(fù)雜點(diǎn)的圖甚至獨(dú)立成了一個(gè)專門(mén)的包。可根據(jù)實(shí)際的需要進(jìn)行選擇并繪制。
附字體參數(shù)表:
1 新細(xì)明體 PMingLiU
2 細(xì)明體 MingLiU
3 標(biāo)楷體 DFKai-SB
4 黑體 SimHei
5 宋體 SimSun
6 新宋體 NSimSun
7 仿宋 FangSong
8 楷體 KaiTi
9 仿宋_GB2312 FangSong_GB2312
10 楷體_GB2312 KaiTi_GB2312
11 微軟正黑體 Microsoft JhengHei
12 微軟雅黑 Microsoft YaHei
13 隸書(shū) LiSu
14 幼圓 YouYuan
15 華文細(xì)黑 STXihei
16 華文楷體 STKaiti
17 華文宋體 STSong
18 華文中宋 STZhongsong
19 華文仿宋 STFangsong
20 方正舒體 FZShuTi
21 方正姚體 FZYaoti
22 華文彩云 STCaiyun
23 華文琥珀 STHupo
24 華文隸書(shū) STLiti
25 華文行楷 STXingkai
26 華文新魏 STXinwei
總結(jié)
以上是生活随笔為你收集整理的第二篇:数据可视化 - 基本API的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: POJ2777 Count Color
- 下一篇: PhpStorm 快捷键大全