r语言散点图_R语言 | 散点图入门:以声学元音图为例
R語言
語言學與R語言的碰撞
Xu & Yang
PhoneticSan
學習參考
Discovering Statistics Using R
Statistics for Linguistics with R
How to Do Linguistics with R
R in Action
Analyzing Linguistic Data
R Graphics Cookbook
··· ···
Recap
可以使用plot( )函數進行基礎的制圖。
調用ggplot2包可以使用ggplot( )函數進行數據可視化,函數的基本原理是多個圖層的疊加,使用+可以不斷疊加需要的圖層。
使用facet_grid( )和facet_wrap( )函數可以將數據分組可視化,以便更直觀地觀察繁多的數據。
R: The R Project for Statistical Computing
https://www.r-project.org/
IDE:
https://rstudio.com/
注:本文參考R Graphics Cookbook一書第五章與Discovering Statistics Using R第四章第五節
R Project
Linguistics
1
?散點圖概述
對于散點圖我們并不陌生,在Excel中我們也經??吹剿纳碛?。在上一篇可視化初階的文章中,我們看到使用geom_point( )函數就可以指定成為散點圖了。為了方便起見,我們使用gcookbook包中的數據來做一次最基本的散點圖。如果沒有安裝過這個包,請記得使用intall.packages( )函數安裝,然后使用library( )函數加載gcookbook和ggplot2兩個包。下面我們要畫的是heightweight中的數據。為了方便操作,我們可以使用summary( )函數先看看這個數據里都有什么內容??梢钥吹嚼锩嬗羞@樣幾項:性別、年、月、身高、體重。我們先以ageYear和heightIn為例畫散點圖。
運行結果
我們使用上一篇所提到的ggplot函數來進行數據可視化操作。首先,我們告訴ggplot( )函數要畫圖的數據源,然后在aes( )中設定好我們的x軸和y軸,最后在疊加一個散點圖層,這樣就完成散點圖的基本操作了。
基本的散點圖
根據之前提到的,很多時候我們的數據想要展示眾多內容,比如,我想在一個數據圖里既展示性別,又展示年份增長的身高,這時候,我們可以使用不同的形狀和顏色來進行區分。比如我們以顏色進行性別區分,那么保證數據中“性別”數據是以factor形式存在的,然后我們直接加入color=sex即可,也就是把分顏色的任務交給R去做,運行結果如下。當然,你也可以使用shape=sex用形狀進行區分,運行結果你可以自己試一試。
性別分組散點圖
這時候有的人就會想法更大了:你看這個heightweight數據中,既然有身高和體重,如果我想有性別分組的時候,還加入體重,該怎么辦呢?其實很簡單,我們回顧一下ggplot( )函數中我們可以選擇的圖形對象,有線條、大小、形狀等等,我們不妨使用size來實驗一下,可以看到,橫坐標是ageYear,縱坐標是heightIn,我們以顏色區分了性別,大小區分了體重。
顏色區分性別,大小區分體重
或者,我覺得這樣不好看,我用形狀來區分性別,用顏色深淺來區分不同的體重,我們可以看到,R會自動幫我們進行顏色深淺的標示體重,具體運行結果如下所示。
形狀區分性別,顏色區分體重
不過,這樣看起來不太美觀,我們見到很多圖都是看起來美美的,略帶透明感的圖標,能不能實現?當然可以,而且實現起來很方便。我們又要回到上一篇中提到的眾多圖形參數中,有一個參數你肯定很奇怪:alpha,這是調整圖形透明度的,范圍是[0,1],加入這個我們就可以看到它的透明度發生了變化。
調整透明度
在散點圖中,還有很多屬性還沒有挖掘到,我們日后會慢慢介紹更多的散點圖操作,如添加回歸曲線,添加置信區間等等,這些操作都是在這些美化基礎之上得到的。因此,我們要把這些散點圖最基本的元素牢牢記住。
R Project
Linguistics
2
?聲學元音圖
在語音的元音研究中,最常見的一個圖就是聲學元音圖,它的橫縱坐標分別表示了F1和F2的數值,從而更加清晰地表明該語言元音的大體分布。其實我們仔細掰開來想,聲學元音圖本質上是調換了坐標軸方向的散點圖,因此我們可以使用ggplot( )函數中的散點圖寫出腳本,輕松地繪制出我們所需要的聲學元音圖,不必每次都打開Excel和畫圖一點點繪制。
林茂燦(2005) 漢語語音研究的幾個問題
首先,我們先“搞到”一些元音的共振峰數據,此處我們使用了六個元音的F1和F2數值,一共有三列數據:元音、F1、F2。在載入數據前,務必記得載入ggplot2包,這樣我們才能使用ggplot( )函數。
元音原始數據
下面我們就可以準備開始畫圖了。首先,我們需要確定好橫縱坐標。根據我們之前看到的聲學元音圖,可以發現橫坐標是F2,縱坐標是F1,我們可以使用不同形狀或顏色來表示不同的元音,那么運行結果如下圖所示。
散點圖初步設置
可以很清楚地看到,這和我們傳統上的聲學元音圖不一樣,因為我們習慣性用左上角來標示/i/,從而體現它舌位前和高的特性,那么我們需要把這個坐標軸進行調換,調換所使用的函數名也很簡單,分別是scale_x_reverse( )和scale_y_reverse( )函數,括號內表明調換的位置,比如我們這里需要把橫坐標放到上邊,縱坐標放到右邊,這樣我們就可以得到這樣的圖形了。
調換后的聲學元音圖
調換完后,其實這個圖已經比較接近了。但是,我不想讓點成為我的標簽,或者形狀成為標簽,我想直接使用對應的元音音標成為標簽可以嗎?當然可以。在上一篇我們介紹不同的圖形對象的時候,有一個geom_text( )函數,它可以實現用文本來標示我們需要的內容。那么,我們把geom_point( )函數替換為geom_text( ),同時我們需要告訴這個函數我們的標簽(label)是什么,因此我們在aes( )函數中,表明我們的label來源于我們數據中vowel這一列。同時,我們既然已經用音標來表示數據了,我們可以添加theme( )函數來隱藏掉旁邊的那個煩人的數據標簽,具體代碼為theme(legend.position="none")即可,那么運行結果就比較好看了。
直接使用音標表示數據
最后,我們再畫上表示這個音標范圍,也就是那個橢圓來表示置信水平,我們使用stat_ellipse( )函數即可,什么參數也不設置的話,就是用實線來圈起來,我們可以設置線型(linetype),也可以設置填充色(填充色以標簽為準,那么fill=vowel)等等,最終我們可以得到完整的聲學元音圖。保存我們寫好的腳本,以后再進行聲學元音圖的繪制,直接導入數據,點擊運行就可以實現了。
—END—
排版:Xu & Yang
總結
以上是生活随笔為你收集整理的r语言散点图_R语言 | 散点图入门:以声学元音图为例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民生信用卡账单分期可以提前还款吗
- 下一篇: java vo转map_JAVA Map