【R畫圖學習8.2】PCA圖-3D

前面一個帖子我們學習了畫基本的PCA圖形呀舔,但是是二維的好乐,今天我們學習繪制三維的止潘,因為在有些paper中看到作者放的是三維的,其實也挺好看的矫限。主成分的計算方法上一個帖子講過了,就不多講了。

計算過主成分后叼风,自己提取一下前面3個PC就成了取董。這個是我們今天的測試數(shù)據(jù)。

其實繪制3維圖形的包也很多无宿,我們先測試一個R里面經(jīng)常用的scatter3D茵汰。

先繪制基本的三維PCA圖。

scatter3D(x = plot.data$DC_1, y = plot.data$DC_3, z = plot.data$DC_2,

? ? ? ? ? xlab = "DC_1",? #設(shè)置x,y,z坐標軸的名稱

? ? ? ? ? ylab = "DC_3",

? ? ? ? ? zlab = "DC_2",

? ? ? ? ? pch=21, #當pch取0~14時孽鸡,其點為空心點蹂午,可以用col(顏色)參數(shù)設(shè)置其邊框的顏色;當pch取15~20時彬碱,其點是實心點豆胸,可以用col參數(shù)設(shè)置其填充的顏色;當pch取21~25時堡妒,其點也是實心點配乱,既可以用col參數(shù)設(shè)置邊框的顏色,也可以用bg參數(shù)設(shè)置其內(nèi)部的填充顏色皮迟。

? ? ? ? ? cex=1.5, #大小

? ? ? ? ? col = "white", #設(shè)置點邊框的顏色

? ? ? ? ? bg = plot.data$color #設(shè)置點的填充色

? ? ? ? )


我們下面調(diào)整一些詳細的參數(shù)來控制細節(jié)搬泥。

scatter3D(x = plot.data$DC_1, y = plot.data$DC_3, z = plot.data$DC_2,

? ? ? ? ? xlab = "DC_1",? #設(shè)置x,y,z坐標軸的名稱

? ? ? ? ? ylab = "DC_3",

? ? ? ? ? zlab = "DC_2",

? ? ? ? ? pch=21,#當pch取0~14時,其點為空心點伏尼,可以用col(顏色)參數(shù)設(shè)置其邊框的顏色忿檩;當pch取15~20時,其點是實心點爆阶,可以用col參數(shù)設(shè)置其填充的顏色燥透;當pch取21~25時,其點也是實心點辨图,既可以用col參數(shù)設(shè)置邊框的顏色班套,也可以用bg參數(shù)設(shè)置其內(nèi)部的填充顏色。

? ? ? ? ? cex=2, #大小

? ? ? ? ? col = "white", #設(shè)置點邊框的顏色

? ? ? ? ? bg = plot.data$color, #設(shè)置點的填充色

? ? ? ? ? bty = "f", #控制繪制框的外型故河,可以為“b”, “b2”, “f”, “g”, “bl”, “bl2”, “u”, “n”其中的一個

? ? ? ? ? ticktype = "detailed", #顯示坐標軸的刻度

? ? ? ? ? theta = -20, #旋轉(zhuǎn)角度

? ? ? ? ? phi=0, #控制三維圖的上下方向

? ? ? ? ? d=3, #透視轉(zhuǎn)換強度

? ? ? ? ? cex.axis = 1.2, cex.lab = 2? ?#調(diào)控坐標軸刻度以及文字的大小?

? ? ? ? )

legend(x=0.6,y=0.2,title =? "Group",legend=paste("G",c(1:10),sep=""),pch=21,cex=2,y.intersp=1,pt.bg = unique(plot.data$color),bg="white",bty="n")



下面我們再來測試2個可以畫3維PCA的其它包吱韭。

install.packages('devtools')

devtools::install_github("AckerDWM/gg3D")

library(gg3D)

安裝好gg3D包后,其實這個包是基于ggplot的鱼的,可以查看幫助發(fā)現(xiàn)只有5個函數(shù)分別為:axes_3D 繪制3D坐標軸理盆,axis_labs_3D 標記坐標刻度,labs_3D標記坐標標簽凑阶,stat_3D 繪制幾何對象猿规,stat_wireframe繪制3D線框或3D曲面。

可以使用labs_3D添加軸標題宙橱。使用hjust姨俩,vjust和angle來實現(xiàn)良好的定位蘸拔。

可以使用axis_labs_3D添加軸標簽。標簽顯示每個軸的最小值和最大值环葵。同樣都伪,可以使用hjust,vjust和angle來實現(xiàn)良好的定位积担。


#theta控制旋轉(zhuǎn)陨晶,phi控制圖的傾斜

theta <- -20 #方位角的度數(shù)

phi <- 0 # 漸近線

colors <- unique(plot.data$color)

names(colors) <- colors

ggplot(plot.data, aes(x = DC_1, y = DC_3, z = DC_2, color = color)) +

? axes_3D(theta=theta, phi=phi) +

? stat_3D(theta=theta, phi=phi) +

? labs_3D(theta=theta,

? ? ? ? ? phi=phi,

? ? ? ? ? hjust=c(1,1,0),

? ? ? ? ? vjust=c(1.5,1,-.2),

? ? ? ? ? labs=c("DC_1", "DC_2", "DC_3")) +

? scale_color_manual(values = colors,labels=unique(plot.data$Group))+

? theme_void()+

? theme(text = element_text(size = 20))


當然還有其它的包,例如scatterplot3d:

scatterplot3d(x = plot.data$DC_1,

? ? ? ? ? ? ? y = plot.data$DC_3,

? ? ? ? ? ? ? z = plot.data$DC_2,

? ? ? ? ? ? ? #color = plot.data$color,

? ? ? ? ? ? ? xlab = "DC_1", ylab = "DC_3", zlab = "DC_2",

? ? ? ? ? ? ? pch = 21,? #點的類型

? ? ? ? ? ? ? bg=plot.data$color, #對于pch 21-25 點的填充色

? ? ? ? ? ? ? angle = 120, #控制旋轉(zhuǎn)角度

? ? ? ? ? ? ? scale.y = 0.7,

? ? ? ? ? ? ? grid=T,? #是否畫網(wǎng)格線

? ? ? ? ? ? ? cex.symbols = 1.5, #點的大小

? ? ? ? ? ? ? col.axis = "#444444",col.grid = "#CCCCCC",col.lab="black" #axis/grid/axis labels的顏色

)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帝璧,一起剝皮案震驚了整個濱河市先誉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌的烁,老刑警劉巖褐耳,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渴庆,居然都是意外死亡铃芦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門襟雷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刃滓,“玉大人,你說我怎么就攤上這事耸弄∵只ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵计呈,是天一觀的道長砰诵。 經(jīng)常有香客問我,道長捌显,這世上最難降的妖魔是什么茁彭? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮扶歪,結(jié)果婚禮上理肺,老公的妹妹穿的比我還像新娘。我一直安慰自己击罪,他們只是感情好哲嘲,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布贪薪。 她就那樣靜靜地躺著媳禁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪画切。 梳的紋絲不亂的頭發(fā)上竣稽,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音,去河邊找鬼毫别。 笑死娃弓,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的岛宦。 我是一名探鬼主播台丛,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼砾肺!你這毒婦竟也來了挽霉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤变汪,失蹤者是張志新(化名)和其女友劉穎侠坎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裙盾,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡实胸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了番官。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庐完。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖徘熔,靈堂內(nèi)的尸體忽然破棺而出假褪,到底是詐尸還是另有隱情,我是刑警寧澤近顷,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布生音,位于F島的核電站,受9級特大地震影響窒升,放射性物質(zhì)發(fā)生泄漏缀遍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一饱须、第九天 我趴在偏房一處隱蔽的房頂上張望域醇。 院中可真熱鬧,春花似錦蓉媳、人聲如沸譬挚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽减宣。三九已至,卻和暖如春玩荠,著一層夾襖步出監(jiān)牢的瞬間漆腌,已是汗流浹背贼邓。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闷尿,地道東北人塑径。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像填具,于是被迫代替她去往敵國和親统舀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容