全棧 - 13 ggplot2 在 R 中進行可視化

這是全棧數據工程師養成攻略系列教程的第十三期:13 ggplot2 在R中進行可視化。javascript

咱們已經具有了必定的代碼基礎,如今不妨來了解下數據可視化,從生動的圖形中更好地感覺數據之美。R是一門統計分析語言,和Python同樣,語法簡單而且有很是豐富的功能包,其中的ggplot2包即可以用簡潔的語法繪製出美觀多樣的圖形。java

下載和安裝

若是沒有R的話須要去下載並安裝,在R的官網中找到下載連接,選擇最近的鏡像地址下載便可,www.r-project.org/。安裝完畢後便可運行R,軟件以下圖所示,界面比較簡單,提供的用戶圖形化接口十分有限。數據庫

所以能夠再安裝一個叫做RStudio的軟件,它基於R的內核提供了更佳豐富的用戶圖形化操做界面,使用起來更方便,用戶體驗更好。能夠在RStudio的官網找到下載連接,下載並安裝RStudio,www.rstudio.com/。安裝完畢後運行RStudio,軟件界面以下圖所示。編程

左上角的兩個按鈕分別用於新建各類文件和打開已有文件,左邊是一個交互命令行,能夠交互式地執行代碼。右邊上半部分是環境窗口(Environment)和歷史窗口(History),分別能夠查看當前編程環境中已有的變量,以及查看歷史命令記錄。右邊下半部分包括文件(Files)、繪圖(Plots)、包(Packages)、幫助(Help)等標籤頁,分別用於查看文件目錄、查看繪圖結果、查看引用的包、查看幫助文檔。數組

例如,在左邊的交互命令行中輸入?plot並回車,便可在右邊的Help中查看plot函數的使用文檔。再輸入a <- 1並回車,便可在右邊的Environment中看到已有的變量,同時在History中也能夠看到以前執行的兩條命令記錄。數據結構

R基礎

安裝包和加載包

R和Python同樣,功能之因此強大是由於它具有豐富多樣的功能包。在R中使用如下命令便可安裝一個新的包,例如ggplot2,包的名字須要用引號括起來。less

install.packages("ggplot2")複製代碼

功能包安裝完畢以後,便可加載並使用其提供的數據集、函數和功能,使用如下命令加載一個功能包,包的名字不須要用引號括起來。ide

library(ggplot2)複製代碼

數據結構

R中的數據結構主要有向量、矩陣、數組、數據框、因子和列表。函數

向量是用於存儲數值型、字符型或邏輯型數據的一維數組,單個向量中的數據必須擁有相同的類型或模式,即要麼都是數值型,要麼都是字符型,要麼都是邏輯型。能夠發現,R中的賦值使用箭頭符號<-,而不是其餘語言經常使用的=學習

# 數值型
a <- c(1, 2, 5, 3, 6, -2, 4)
# 字符型
b <- c("one", "two", "three")
# 邏輯型
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)複製代碼

用方括號能夠訪問向量中的元素,例如訪問向量a中的第二個和第四個元素,能夠用a[c(2, 4)]。向量也支持支持冒號語法,a[2:6]將返回a的第二至第六個元素。因此向量的用法和Python中list有類似又不一樣,Python中list的下標從0開始,並且冒號語法只包括開始下標但不包括結束下標。另外Python中負號下標表示從後往前數,而向量中負號表示排除,例如a[-1]返回向量a中除了第一個之外的其餘所有元素。

矩陣是一個二維數組,每一個元素都擁有相同的類型,必須都爲數值型、字符型或邏輯型,可經過函數matrix建立矩陣。

mymatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns, byrow=FALSE, dimnames=list(rownames, colnames))複製代碼

其中vector向量包含了所有矩陣元素,nrow和ncol爲行數和列數,byrow默認爲FALSE表示按列填充,不然TRUE爲按行填充,dimnames爲行名和列名。使用時,只有前三個參數是必須的。

y <- matrix(1:20, nrow=5, ncol=4)
cell <- c(1, 26, 24, 68)
rnames <- c("R1", "R2")
cnames <- c("C1", "C2")
mymatrix <- matrix(cell, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rnames, cnames))
mymatrix <- matrix(cell, nrow=2, ncol=2, byrow=FALSE, dimnames=list(rnames, cnames))複製代碼

x[i,]表示矩陣x中的第i行,x[,j]表示矩陣x中的第j列,x[i, j]表示矩陣x中的第i行第j個元素,或者使用數值型向量代替i、j以同時選擇多行或多列。

數組和矩陣相似,可是維度能夠大於2,經過array函數建立。

myarray <- array(vector, dimensions, dimnames)複製代碼

其中vector包含數組中的數據,dimensions是一個數值型向量,給出了各個維度下標的最大值,dimnames可選,以向量形式指定各個維度的名稱。

dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
z <- array(1:24, c(2, 3, 4), dimnames=list(dim1, dim2, dim3))複製代碼

數據框能夠理解成數據庫中的表,即每一行表示一條記錄,每一列表示一項字段。不一樣列能夠包含不一樣類型,例如某一列爲數值型而另外一列爲字符型,但每列全部行的數據類型必須相同。數據框經過data.frame建立,是R中最爲重要的一種數據結構。

patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
patientdata <- data.frame(patientID, age, diabetes, status)複製代碼

訪問數據框中的數據能夠經過如下三種方式:

# 訪問第一列和第二列
patientdata[1:2]
# 按列名訪問,使用方括號和向量
patientdata[c("diabetes","status")]
# 按列名訪問,使用$
patientdata$age複製代碼

無序類別型變量和有序類別型變量在R中都稱爲因子。簡單來講,因子就是一種離散值,例如性別只能是male和female,對應兩個字符型因子,或者分別用0和1來表示,對應兩個數值型因子。若是因子的不一樣水平之間存在排序關係,則稱爲有序因子。如下代碼中,diabetes對於不一樣的人只能取Type1或Type2,所以是一個因子。

diabetes <- factor(c("Type1", "Type2", "Type1", "Type1"))複製代碼

如下代碼中,status對於不一樣的人只能取Poor、Improved或Excellent
,同時三者之間存在排序關係,所以使用orderded=TRUE指定爲一個有序因子。

status <- factor(c("Poor", "Improved", "Excellent", "Poor"), ordered=TRUE)
# 或者手動指定排序的順序
status <- factor(c("Poor", "Improved", "Excellent", "Poor"), ordered=TRUE, levels=c("Poor", "Improved", "Excellent"))複製代碼

列表和向量同樣,一樣是多個元素的排列,但每一個元素能夠是以上說起的任何數據結構,甚至是其餘列表的組合,即嵌套列表。使用list定義一個列表,並能夠爲各個元素進行命名。

g <- "My First List"
h <- c(25, 26, 18, 39)
j <- matrix(1:10, nrow=5)
k <- c("one", "two", "three")
mylist <- list(title=g, ages=h, j, k)
mylist複製代碼

能夠看到mylist包括四個元素,使用mylist[[2]]mylist$age或者mylist[["ages"]]訪問其中的第二個元素。

最後須要注意的是,R中的變量名、行名、列名等名稱,都儘可能使用純英文,避免使用中文致使錯誤。

數據集

R中提供了不少數據集,安裝包也會提供一些額外的數據集,這些數據集大多以數據框的形式給出,例如mtcars數據集提供了32款車型的11項參數值,全部參數值都爲數值型。

head(mtcars)
nrow(mtcars)
names(mtcars)
summary(mtcars)複製代碼

另外,也能夠從csv、txt等文件中讀取數據爲數據框,使用data.table包的fread()函數讀取數據,例如以前提供的douban_movie_clean.txt。讀取以前須要在Files標籤頁中找到數據文件,而後點擊齒輪中的Set As Working Directory,將當前目錄設爲工做路徑。

# 沒有包則安裝
# install.packages("data.table")
library(data.table)
douban_movie_clean <- fread("douban_movie_clean.txt", header=TRUE, sep="^", encoding="UTF-8")複製代碼

R腳本

除了在交互命令行中編寫R代碼,一種更方便的選擇是使用R腳本,就如同新建一個.py代碼,在Sublime中編輯完畢後再運行同樣。點擊左上角的新建文件按鈕,選擇R Script,在新建的R腳本中能夠自由地編寫多行代碼。編寫完畢後,選中所有或者部分代碼,點擊R腳本右上方的Run按鈕,便可運行選中的代碼。

ggplot2

ggplot2是R中的一個功能包,能夠用簡潔統一的語法繪製出美觀多樣的圖形。安裝好ggplot2以後,讓咱們經過一個簡單的例子感覺下ggplot2的魅力。

# 若是沒有則安裝
# install.packages("ggplot2")
# 加載包
library(ggplot2)
ggplot(douban_movie_clean) + geom_histogram(aes(x=length))複製代碼

以上代碼對豆瓣電影數據集的片長這一字段繪製直方圖,橫軸爲電影片長,縱軸爲每一個片長區間的電影數量。繪圖結果將顯示在Plots標籤頁中,能夠點擊Zoom按鈕放大圖像,能夠發現大多數電影的片長集中在90至120分鐘之間。

R學習筆記

若是對R感興趣、但願進一步瞭解更多內容,能夠訪問個人博客,zhanghonglun.cn/blog/tag/r/,以上連接以r爲標籤搜索相關文章,搜索結果中會有一個《R學習筆記》系列,共14篇文章,可做爲進一步學習R的參考資料。

視頻連接:在R中進行可視化

若是以爲文章不錯,不妨點一下左下方的喜歡~

相關文章
相關標籤/搜索