1. 程式人生 > >R語言學習之基本語法

R語言學習之基本語法

ggplot2圖形之基本語法:

ggplot2的核心理念是將繪圖與資料分離,資料相關的繪圖與資料無關的繪圖分離
ggplot2是按圖層作圖
ggplot2保有命令式作圖的調整函式,使其更具靈活性
ggplot2將常見的統計變換融入到了繪圖中。
ggplot的繪圖有以下幾個特點:第一,有明確的起始(以ggplot函式開始)與終止(一句語句一幅圖);其二,圖層之間的疊加是靠“+”號實現的,越後面其圖層越高。
ggplot圖的元素可以主要可以概括如下:最大的是plot(指整張圖,包括background和title),其次是axis(包括stick,text,title和stick)、legend(包括backgroud、text、title)、facet這是第二層次,其中facet可以分為外部strip部分(包括backgroud和text)和內部panel部分(包括backgroud、boder和網格線grid,其中粗的叫grid.major,細的叫grid.minor)。
ggplot2裡的所有函式可以分為以下幾類:
用於運算(我們在此不講,如fortify_,mean_等)
初始化、展示繪圖等命令(ggplot,plot,print等)
按變數組圖(facet_等)
真正的繪圖命令(stat_,geom_,annotate),這三類就是實現一個函式一個圖層的核心函式。


微調圖型:嚴格意義上說,這一類函式不是再實現圖層,而是在做區域性調整。
aes : 同樣適用於修改geom_XXX() aes引數控制了對哪些變數進行圖形對映,以及對映方式
圖形屬性(aes) 橫縱座標、點的大小、顏色,填充色等

完整公式總結:

ggplot(data = , aes(x = , y = )) +
geom_XXX(...) + ... + stat_XXX(...) + ... +
annotate(...) + ... + labs(...) +
scale_XXX(...) + coord_XXX(...) + guides(...) + theme(...) +
facet_XXX(...)


#完整ggplot2繪圖示意:
library(ggplot2)
attach(iris)
p <- ggplot(data=iris,aes(x = Sepal.Length,y = Sepal.Width))
p + geom_point(aes(colour = Species)) + stat_smooth() + 
labs(title = "Iris of Sepal.length \n According to the Sepal.Width") +
theme_classic() + theme_bw() +annotate("text",x=7,y=4,parse = T,label = "x[1]==x[2]",size=6, family="serif",fontface="italic", colour="darkred")

geom :表示幾何物件,它是ggplot中重要的圖層控制物件,因為它負責圖形渲染的型別。
幾何物件(geom_) 上面指定的圖形屬性需要呈現在一定的幾何物件上才能被我們看到,這些承載圖形屬性的物件可能是點,可能是線,可能是bar

stat :統計變換 比如求均值,求方差等,當我們需要展示出某個變數的某種統計特徵的時候,需要用到統計變換

annotate:添加註釋 #由於設定的文字會覆蓋原來的圖中對應的位置,可以改變文字的透明度或者顏色 例: annotate(geom='text')會向圖形新增一個單獨的文字物件 annotate("text",x=23,y=200,parse=T,label = "x[1]==x[2]")


labs : labs(x = "這是 X 軸", y = "這是 Y 軸", title = "這是標題") ## 修改文字

scale_: 標度是一種函式,它控制了數學空間到圖形元素空間的對映。一組連續資料可以對映到X軸座標,也可以對映到一組連續的漸變色彩。一組分類資料可以對映成為不同的形狀,也可以對映成為不同的大小,這就是與aes內的各種美學(shape、color、fill、alpha)調整有關的函式。

coord_:調整座標,控制了圖形的座標軸並影響所有圖形元素. 調整座標 coord_flip()來翻轉座標軸。使用xlim()和ylim()來設定連續型座標軸的最小值和最大值 coord_cartesian(xlim=c(0,100),ylim=c(0,100))

guides:調整所有的text。

theme:調整不與資料有關的圖的元素的函式。theme函式採用了四個簡單地函式來調整所有的主題特徵:element_text調整字型,element_line調整主題內的所有線,element_rect調整所有的塊,element_blank清空。theme(panel.grid =element_blank()) ## 刪去網格線

facet :控制分組繪圖的方法和排列形式
# 不指定資料集時,data = NULL
一個圖形物件就是一個包含資料,對映,圖層,標度,座標和分面的列表,外加元件options
ggplot(資料, 對映) geom_xxx(對映, 資料) stat_xxx(對映, 資料)

# 通過“+”實現不同圖層的相應累加,且越往後的圖層表現在上方
點(point, text):往往只有x、y指定位置,有shape但沒有fill
線(line,vline,abline,hline,stat_function等):一般是基於函式來處理位置
射(segment):特徵是指定位置有xend和yend,表示射線方向
面(tile, rect):這類一般有xmax,xmin,ymax,ymin指定位置
棒(boxplot,bin,bar,histogram):往往是二維或一維變數,具有width屬性
帶(ribbon,smooth):透明是特徵是透明的fill
補:包括rug圖,誤差棒(errorbar,errorbarh)
然後,就是按照你的需要一步步加圖層了(使用“+”)。

*********************

基本語法:

資料(data):將要展示的資料;

對映(mapping):資料中的變數到圖形成分的對映;

幾何物件(geom):用來展示資料的幾何物件,如geom_point,geom_bar,geom_abline;

圖形屬性(aes):圖形屬性決定了圖形的外觀,如字型大小、標籤位置及刻度線;

標度(scale):決定了變數如何被對映到圖形屬性上;

座標(coordinate):資料如何被對映到圖中。如coord_cartesian:笛卡爾座標、coord_polar:極座標、coord_map:地理投影;

統計變換(stat):對資料進行彙總,如箱線圖:stat_boxplot、線圖:stat_abline、直方圖:stat_bin

分面(facet):用來描述資料如何被拆分為子集,以及對不同子集是如何繪製的。

位置調整(position):對圖形位置做精細控制。

建立ggplot物件:使用ggplot函式:

ggplot(data,mapping=aes(),...,environment=globalenv())

引數 描述 預設值
data 要繪圖的資料框
mapping 一系列圖形屬性的對映 aes()
environment 圖形屬性引數所在的環境 globalenv()
...

幾何物件:

為了指定圖形型別,必須加入圖層,可採用layer()函式。可以使用“point”等短名稱來指定幾何物件。layer函式允許將幾何物件作為名稱和值的配對,這樣就不需要指出函式全名,而只需要geom_後面的部分。幾何物件如下:

幾何物件函式 描述
geom_abline 線圖,由斜率和截距指定
geom_area 面積圖(即連續的條形圖)
geom_bar 條形圖
geom_bin2d 二維封箱的熱圖
geom_blank 空的幾何物件,什麼也不畫
geom_boxplot 箱線圖
geom_contour 等高線圖
geom_crossbar crossbar圖(類似於箱線圖,但沒有觸鬚和極值點)
geom_density 密度圖
geom_density2d 二維密度圖
geom_errorbar 誤差線(通常新增到其他圖形上,比如柱狀圖、點圖、線圖等)
geom_errorbarh 水平誤差線
geom_freqpoly 頻率多邊形(類似於直方圖)
geom_hex 六邊形圖(通常用於六邊形封箱)
geom_histogram 直方圖
geom_hline 水平線
geom_jitter 點、自動添加了擾動
geom_line
geom_linerange 區間,用豎直線來表示
geom_path 幾何路徑,由一組點按順序連線
geom_point
geom_pointrange 一條垂直線,線的中間有一個點(與Crossbar圖和箱線圖相關,可以用來表示線的範圍)
geom_polygon 多邊形
geom_quantile 一組分位數線(來自分位數迴歸)
geom_rect 二維的長方形
geom_ribbon 彩虹圖(在連續的x值上表示y的範圍,例如Tufte著名的拿破崙遠征圖)
geom_rug 觸鬚
geom_segment 線段
geom_smooth 平滑的條件均值
geom_step 階梯圖
geom_text 文字
geom_tile 瓦片(即一個個的小長方形或多邊形)
geom_vline 豎直線

統計變換

統計變換函式 描述
stat_abline 新增線條,用斜率和截距表示
stat_bin 分割資料,然後繪製直方圖
stat_bin2d 二維密度圖,用矩陣表示
stat_binhex 二維密度圖,用六邊形表示
stat_boxplot 繪製帶觸鬚的箱線圖
stat_contour 繪製三維資料的等高線圖
stat_density 繪製密度圖
stat_density2d 繪製二維密度圖
stat_function 新增函式曲線
stat_hline 新增水平線
stat_identity 繪製原始資料,不進行統計變換
stat_qq 繪製Q-Q圖
stat_quantile 連續的分位線
stat_smooth 新增平滑曲線
stat_spoke 繪製有方向的資料點(由x和y指定位置,angle指定角度)
stat_sum 繪製不重複的取值之和(通常用在三點圖上)
stat_summary 繪製彙總資料
stat_unique 繪製不同的數值,去掉重複的數值
stat_vline 繪製豎直線

標度函式

標度函式 描述
scale_alpha alpha通道值(灰度)
scale_brewer 調色盤,來自colorbrewer.org網站展示的顏色標度
scale_continuous 連續標度
scale_data 日期
scale_datetime 日期和時間
scale_discrete 離散值
scale_gradient 兩種顏色構建的漸變色
scale_gradient2 3中顏色構建的漸變色
scale_gradientn n種顏色構建的漸變色
scale_grey 灰度顏色
scale_hue 均勻色調
scale_identity 直接使用指定的取值,不進行標度轉換
scale_linetype 用線條模式來展示不同
scale_manual 手動指定離散標度
scale_shape 用不同的形狀來展示不同的數值
scale_size 用不同大小的物件來展示不同的數值

座標系

座標函式 描述
coord_cartesian 笛卡兒座標
coord_equal 等尺度座標(斜率為1)
coord_flip 翻轉笛卡兒座標
coord_map 地圖投影
coord_polar 極座標投影
coord_trans 變換笛卡兒座標

分面

分面函式 描述
facet_grid 將分面放置在二維網格中
facet_wrap 將一維的分面按二維排列

位置

定位函式 描述
position_dodge 並列
position_fill 填充
position_identity 不對位置進行處理
position_jitter 擾動處理
position_stack 堆疊處理

Chap1. R 基礎

## 載入檔案

  1. 預設情況下,資料集中的字串(String)會被視為因子(Factor)處理,此時可以設定stringAsFactors = FALSE,將文字變數視為字串表示。
  2. 讀取xlsx和xls檔案:packagexlsx(Java)和gdata(Perl)
  3. foreign:read.spss;read.octave;read.systat;read.xport;read.dta

Chap2. 快速探索資料(略)

## 概述 qplot()函式的語法與基礎繪圖系統類似,簡短易輸入,通常用於探索性資料分析。qplot(x,y,data,geom=c(xx,xx))

條形圖

  1. barplot()第一個向量用來設定條形的高度,第二個向量用來設定每個條形對應的標籤(可選)。
  2. 變數值條形圖: 兩個輸入變數,x為分類變數,y表示變數值
  3. 頻數條形圖:一個輸入變數,需要注意連續x軸和離散x軸的差異。

直方圖

與條形圖不同的地方在於,x為連續型變數

箱線圖

  1. 需要傳遞兩個向量:x和y
  2. 在x軸上引入兩變數的互動:interaction()
  3. Question:基礎繪圖系統和ggplot2的箱線圖略有不同。

繪製函式影象

ggplot(data.frame(x=c(0,20)), aes(x=x)) + stat_function(fun=myfun, geom = "line")

Chap3. 條形圖

重要細節:條形圖的高度表示的是資料集中變數的頻數,還是表示變數取值本身

## 概述 條形圖通常用來展示不同的分類下(x軸)某個數值型變數的取值(y軸),其條形高度既可以表示資料集中變數的頻數,也可以表示變數取值本身。

引數

  1. fill:改變條形圖的填充色;colour:新增邊框線;position:改變條形圖的型別;linetype:線型
  2. scale_fill_brewer()scale_fill_manual()設定顏色
  3. scale_fill_brewer(palette="Pastell")

條形圖

  1. 頻數條形圖:只需要一個輸入變數,當變數為連續型變數時,等價於直方圖。
  2. 顏色對映在aes()內部完成,而顏色的重新設定在aes()外部完成。
  3. 排序:ggplot(upc, aes=(x=reorder(Abb, Change)), y =Change, fill = Region)
  4. 正負條形圖著色:首先,建立一個對取值正負情況進行標示的變數,然後引數設定為position='identity',這可以避免系統因對負值繪製堆積條形而發出的警告資訊。
  5. guide=FALSE刪除圖例
  6. width調整條形圖的條形寬度;position_dodge(0.7)調整條形間距(中心距離)
  7. 堆積條形圖:geom_bar(stat='identity')預設情況
  8. 更改圖例顏色順序:guides(fill = guide_legend(reverse=TRUE))
  9. 呼叫調色盤 scale_fill_brewer(palette='Pastell')和手動:scale_fill_manual()
  10. 百分比堆積圖:首先利用plyr包種的ddply()轉化資料,然後再繪圖.
  11. 新增 資料標籤:geom_text(aes(y = label_y, label=Weight),vjust=xxx)其中y用來控制標籤的位置
  12. 繪製Cleveland點圖:通常都會設定成根據x軸對應的連續變數的大小取值對資料進行排序。
  13. reorder(x,y):先將x轉化為因子,然後根據y對其進行排序。
  14. 主題系統(Theming System):theme(panel.grid.major.x = element_blank(),panel.grid.minor.x = element_blank())

彙總好的資料集繪製條形圖:

  1. x <- c('A','B','C','D','E')
  2. y <- c(13,22,16,31,8)
  3. df <- data.frame(x= x, y = y)
  4. ggplot(data = df, mapping = aes(x = x, y = y)) + geom_bar(stat= 'identity')

對於條形圖的y軸就是資料框中原本的數值時,必須將geom_bar()函式中stat(統計轉換)引數設定為’identity’,即對原始資料集不作任何統計變換,而該引數的預設值為’count’,即觀測數量。

使用明細資料集繪製條形圖:

  1. set.seed(1234)
    x <- sample(c('A','B','C','D'), size = 1000, replace= TRUE, prob = c(0.2,0.3,0.3,0.2))
    y <- rnorm(1000) * 1000 
    df = data.frame(x= x, y = y)
    ggplot(data = x = x, mapping = aes(x = factor(x), y = ..count..))+ geom_bar(stat = 'count')

資料集本身是明細資料,而對於統計某個離散變量出現的頻次時,geom_bar()函式中stat(統計轉換)引數只能設定為預設,即’count’。

當然,如果需要對明細資料中的某個離散變數進行聚合(均值、求和、最大、最小、方差等)後再繪製條形圖的話,建議先使用dplyr包中的group_by()函式和summarize()函式實現資料彙總,具體可參見:

從x軸的資料型別來看:有字元型的x值也有數值型的x值

上面的兩幅圖對應的x軸均為離散的字元型值,如果x值是數值型時,該如何正確繪製條形圖?

  1. set.seed(1234)
  2. x <- sample(c(1,2,4,6,7), size = 1000, replace = TRUE,prob = c(0.1,0.2,0.2,0.3,0.2))
  3. ggplot(data = data.frame(x = x), mapping= aes(x = x, y = ..count..)) + geom_bar(stat = 'count')

如果直接使用數值型變數作為條形圖的x軸,我們會發現條形圖之間產生空缺,這個空缺其實對應的是3和5兩個值,這樣的圖形並不美觀。為了能夠使條形圖之間不存在類似的空缺,需要將數值型的x轉換為因子,即factor(x),如下圖所示:

  1. ggplot(data = data.frame(x = x), mapping = aes(x = factor(x), y = ..count..))+ geom_bar(stat = 'count')

上面幾幅圖的顏色均為灰色的,顯得並不是那麼亮眼,為了使顏色更加豐富多彩,可以在geom_bar()函式內通過fill引數可colour引數設定條形圖的填充色和邊框色,例如:

  1. ggplot(data = data.frame(x = x), mapping = aes(x = factor(x), y = ..count..))+ geom_bar(stat = 'count', fill = 'steelblue', colour = 'darkred')

關於顏色的選擇可以在R控制檯中輸入colours(),將返回657種顏色的字元。如果想檢視所有含紅色的顏色值,可以輸入colours()[grep(‘red’,
colours())]返回27種紅色。

繪製簇條形圖

以上繪製的條形圖均是基於一個離散變數作為x軸,如果想繪製兩個離散變數的條形圖即簇條形圖該如何處理呢?具體見下方例子:

  1. x <- rep(1:5, each = 3)
  2. y <- rep(c('A','B','C'),times = 5)
  3. set.seed(1234)
  4. z <- round(runif(min = 10, max = 20, n = 15)) df <- data.frame(x= x, y = y, z = z)
  5. ggplot(data = df, mapping = aes(x = factor(x), y = z,fill = y)) + geom_bar(stat = 'identity', position = 'dodge')

對於簇條形圖只需在ggplot()函式的aes()引數中將其他離散變數賦給fill引數即可。這裡的position引數表示條形圖的擺放形式,預設為堆疊式(stack),還可以是百分比的堆疊式。下面分別設定這兩種引數,檢視一下條形圖的擺放形式。

堆疊式:

  1. ggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat= 'identity', position = 'stack')

發現一個問題,條形圖的堆疊順序(A,B,C)與圖例順序(C,B,A)恰好相反,這個問題該如何處理呢?很簡單,只需再新增guides()函式進行設定即可,如下所示:

  1. ggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat= 'identity', position = 'stack') + guides(fill = guide_legend(reverse= TRUE))

guides()函式將圖例引到fill屬性中,再使圖例反轉即可。

百分比堆疊式:

  1. ggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat= 'identity', position = 'fill')

顏色配置:

同樣,如果覺得R自動配置的填充色不好看,還可以根據自定義的形式更改條形圖的填充色,具體使用scale_fill_brewer()和scale_fill_manual()函式進行顏色設定。

scale_fill_brewer()函式使用R自帶的ColorBrewer畫板

ggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat= 'identity', position = 'dodge') + scale_fill_brewer(palette = 'Accent')

具體的調色盤顏色可以檢視scale_fill_brewer()函式的幫助。

scale_fill_manual()函式允許使用者給指定的分類水平設定響應的色彩,個人覺得這個比較方便

  1. col <- c('darkred','skyblue','purple')
  2. ggplot(data = df, mapping =aes(x = factor(x), y = z, fill = y)) + geom_bar(stat = 'identity', colour= 'black', position = 'dodge') + scale_fill_manual(values = col, limits= c('B','C','A')) + xlab('x')

a <- ggplot(mpg, aes(x=hwy))
a + stat_bin(aes(fill=..count.., color=-1*..ndensity..), binwidth = 1)

plot of chunk unnamed-chunk-5

統計方法有輸入,有輸出。通常輸入為x和y。輸出值會以例的形式追加到當前操作的資料拷貝中。比如上例中的stat_bin函式,就會生成四列新資料,分別為count, density, ncount以及ndensity。在訪問這些新列的時候,使用..name..的方式

 該如何繪製有序的條形圖?

  1. #不經排序的條形圖,預設按x值的順序產生條形圖
  2. x <- c('A','B','C','D','E','F','G')
  3. y <-c('xx','yy','yy','xx','xx','xx','yy')
  4. z <- c(10,33,12,9,16,23,11) 
  5. df<- data.frame(x = x, y = y, z = z)
  6. ggplot(data = df, mapping = aes(x= x, y = z, fill = y)) + geom_bar(stat = 'identity')

按z值的大小,重新排列條形圖的順序,只需將aes()中x的屬性用reorder()函式更改即可。

  1. ggplot(data = df, mapping = aes(x = reorder(x, z), y = z, fill = y)) +geom_bar(stat = 'identity') + xlab('x')

關於條形圖的微調

如何y軸的正負值區分開來,並去除圖例

  1. set.seed(12)
    x <- 1980 + 1:35
    y <- round(100*rnorm(35))
    df <- data.frame(x = x,y = y)
    # 判斷y是否為正值
    df <- transform(df,judge = ifelse(y>0,"YES","NO"))
    # 去除圖例用theme()主題函式
    ggplot(df,aes(x = x,y = y,fill = judge))+
    geom_bar(stat = "identity")+
    theme(legend.position= "")+
    xlab("Year")+
    scale_fill_manual(values = c("darkred","blue"))

stat引數和position引數均設定為identity,目的是圖形繪製不要求對原始資料做任何的變換,包括統計變換和圖形變換,排除圖例可以通過scale_fill_manual()函式將引數guide設定為FALSE,同時該函式還可以自定義填充色,一舉兩得。

ggplot(data = df, mapping = aes(x = x, y = y, fill = judge))+ 
geom_bar(stat = 'identity', position = 'identity')+ 
scale_fill_manual(values = c('blue','red'), guide = FALSE)+ 
xlab('Year')

調整條形圖的條形寬度和條形間距

geom_bar()函式可以非常靈活的將條形圖的條形寬度進行變寬或變窄設定,具體通過函式的width引數實現,width的最大值為1,預設為0.9。

x <- c("A","B","C","D","E")
y <- c(10,20,15,22,18)
df <- data.frame(x = x,y = y)
# 不作任何條形寬度的調整
ggplot(df,aes(x = x,y = y))+
geom_bar(stat = "identity",fill = "steelblue",colour = "black") 

# 使條形寬度變寬
ggplot(df,aes(x = x,y = y))+geom_bar(stat = "identity",fill = "steelblue",colour = "black",width = 1)

對於簇條形圖來說,還可以調整條形之間的距離,預設情況下,條形圖的組內條形間隔為0,具體可通過函式的position_dodge引數實現條形距離的調整,為了美觀,一般將條形距離設定的比條形寬度大一點。

  1. x <- rep(1:5,each = 3)
    y <- rep(c("A","B","C"),times = 5)
    set.seed(12)
    z <- round(runif(min = 10,max = 20,n = 15))
    df <- data.frame(x = x,y = y,z = z)
    # 不做任何條形寬度和條形距離的調整
    ggplot(df,aes(x = factor(x),y = z,fill = y))+
    geom_bar(stat = "identity",position = "dodge")

調整條形寬度和條形距離

  1. ggplot(data = df, mapping = aes(x = factor(x), y = z, fill = y)) + geom_bar(stat= 'identity', width = 0.5, position = position_dodge(0.7))

新增資料標籤

geom_text()函式可以方便的在圖形中新增數值標籤,具體微調從幾個案例開始:

  1. # 新增標籤
    ggplot(df,aes(x = interaction(x,y),y = z,fill = y))+
    geom_bar(stat = "identity")+
    geom_text(aes(label = z))

除此之外,還可以調整標籤的大小、顏色、位置等。

  1. ggplot(data = df, mapping = aes(x = interaction(x,y), y = z, fill = y))+ geom_bar(stat = 'identity') + ylim(0,max(z)+1) + geom_text(mapping =aes(label = z), size = 8, colour = 'orange', vjust = 1)

ylim設定條形圖中y軸的範圍;size調整標籤字型大小,預設值為5號;colour更換標籤顏色;vjust調整標籤位置,1為分界線,越大於1,標籤越在條形圖上界下方,反之則越在條形圖上上界上方。

# vjust 調整標籤豎直位置,越大,標籤越在條形圖的上界下方;0.5時,則在中間。
# hjust 調整標籤水平位置,越大,標籤越在條形圖的上界左邊;0.5時,則在中間。

對於水平交錯的簇條形圖,必須通過geom_text()函式中的position_dodge()引數來調整標籤位置,hjust=0.5將標籤水平居中放置。

  1. ggplot(data = df, mapping = aes(x = x, y = z, fill = y)) + geom_bar(stat
  2. = 'identity', position = 'dodge') + geom_text(mapping = aes(label = z),
  3. size = 5, colour = 'black', vjust = 1, hjust = .5, position = position_dodge(0.9))

這裡的圖形位置與標籤位置擺放必須一致,即圖形位置geom_bar()函式中的position = 'dodge'引數,標籤位置geom_text()函式中的position
= position_dodge(0.9)引數。

對於堆疊的簇條形圖,必須通過geom_text()函式中的position_stack()引數來調整標籤位置,hjust將標籤水平居中放置。

  1. ggplot(data = df, mapping = aes(x = x, y = z, fill = y)) + geom_bar(stat
  2. = 'identity', position = 'stack') + geom_text(mapping = aes(label = z),
  3. size = 5, colour = 'black', vjust = 3.5, hjust = .5, position = position_stack())

這裡的圖形位置與標籤位置擺放必須一致,即圖形位置geom_bar()函式中的position = 'stack'引數,標籤位置geom_text()函式中的position
= position_stack()引數。

補充:統計變換 
若x軸變數為連續的,則用sta = bin; 
若離散型的,可用stat = “count”或stat = “identity”

參考資料

R資料視覺化手冊

R語言_ggplot2:資料分析與圖形藝術

Chap4. 折線圖

概述

折線圖可以反映某種現象的趨勢。通常折線圖的橫座標是時間變數,縱座標則是一般的數值型變數。當然,折線圖也允許橫縱座標為離散型和數值型。

折線圖通常用來對兩個連續變數之間的相互依存關係進行視覺化。其中x也可以是因子型變數。

簡單折線圖

geom_line()
  1. 對於因子型變數,必須使用aes(group=1)以確保ggplot()知道這些資料點屬於同一個分組,從而應該用一條折線連在一起。
  2. 資料標記相互重疊:需要相應地左移或者右移連線線以避免點線偏離。geom_line(position=position_dodge(0.2))
  3. 引數:線型(linetype),線寬(size),顏色(colour):邊框線
  4. aes()函式外部設定顏色、線寬、線型和點型等引數會將所有目標物件設定為同樣的引數值。
  5. 面積圖:geom_area(),alpha調節透明度
  6. 堆積面積圖:geom_area()基礎上,對映一個因子型比那裡給填充色(fill)即可
  7. 新增置信域:geom_ribbon(),然後分貝對映一個變數給ymin和ymax。geom_ribbon(aes(ymin=xx,ymax=xx), alpha = 0.2)

一、繪製單條折線圖

library(ggplot2)
library(lubridate) #處理日期時間相關的R包,非常有用,強烈推薦
Year <- year(seq(from = as.Date('2006-01-01'), to = as.Date('2015-01-01'), by = 'year'))
Weight <- c(23,35,43,57,60,62,63,66,61,62)
df <- data.frame(Year = Year, Weight = Weight)
ggplot(data = df, mapping = aes(x = factor(Year), y = Weight, group = 1)) + geom_line() + xlab('Year')

有關離散變數的折線圖 

type <- c('A','B','C','D','E')
quanlity <- c(1,1.1,2.1,1.5,1.7)
df <- data.frame(type = type, quanlity = quanlity)
ggplot(data = df, mapping = aes(x = type, y = quanlity, group = 1)) + geom_line()

有關連續變數的折線圖 

set.seed(1234)

times <- 1:15

value <- runif(15,min = 5,max = 15)

df <- data.frame(times = times, value = value)

ggplot(data = df, mapping = aes(x = times, y = value)) + geom_line()

善於發現的你,可能會注意到上面三段程式碼有一個重要的不同之處,那就是第一段和第二段程式碼中含有‘group = 1’的設定這樣做是因為橫座標的屬性設定為了因子,即將連續型的年份和離散型的字元轉換為因子,如果不新增‘group = 1’這樣的條件,繪圖將會報錯。故務必需要記住這裡的易犯錯誤的點!

往折線圖中新增標記(點) 當資料點密度比較小或採集分佈(間隔)不均勻時,為折線圖做上標記將會產生非常好的效果。處理的方法非常簡單,只需在折線圖的基礎上再加上geom_point()函式即可。

set.seed(1234)

year <- c(1990,1995,2000,2003,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015)

value <- runif(15, min = 10, max = 50)

df <- data.frame(year = year, value = vlaue)

ggplot(data = df, mapping = aes(x = year, y = value)) + geom_line() + geom_point()

從圖中就可以非常明顯的看出,剛開始採集的點分佈非常散,而後面採集的點就比較密集,這也有助於對圖的理解和應用。

二、繪製多條折線圖 上面繪製的都是單條這折線圖,對於兩個或兩個以上的折線圖該如何繪製呢?也很簡單,只需將其他離散變數賦給諸如colour(線條顏色)和linetype(線條形狀)的屬性即可,具體參見下文例子。

基於顏色的多條折線圖

set.seed(1234)
year <- rep(1990:2015, times = 2)
type <- rep(c('A','B'),each = 26)
value <- c(runif(26),runif(26, min = 1,max = 1.5))
df <- data.frame(year = year, type = type, value = value)
ggplot(data = df, mapping = aes(x = year, y = value, colour = type)) + geom_line()

基於形狀的多條折線圖

ggplot(data = df, mapping = aes(x = year, y = value, linetype= type)) + geom_line()

同樣需要注意的是,在繪製多條折線圖時,如果橫座標為因子,必須還得加上‘group=分組變數’的引數,否則報錯或繪製出錯誤的圖形。

以上繪製的折線圖,均採用預設格式,不論是顏色、形狀、大小還是透明度,均沒有給出自定義的格式。其實ggplot2包也是允許使用者根據自己的想法設定這些屬性的。

自定義線條或點的顏色—scale_color_manual()

自定義線條型別—scale_linetype_manual()

自定義點的形狀—scale_shape__manual()

自定義點的大小或線條的寬度—scale_size__manual()

自定義透明度—scale_alpha__manual()

綜合的例子:


ggplot(data = df, mapping = aes(x = year, y = value, linetype = type, colour = type, shape = type, fill = type))

+ geom_line() + geom_point() #繪製線圖和點圖

+ scale_linetype_manual(values = c(1,2)) #自定義線條型別

+ scale_color_manual(values = c('steelblue','darkred')) #自定義顏色

+ scale_shape_manual(values = c(21,23)) #自定義點形狀

+ scale_fill_manual(values = c('red','black')) #自定義點的填充色

雖然這幅圖畫的優點誇張,目的是想說明可以通過自定義的方式,想怎麼改就可以怎麼改。前提是aes()屬性的內容與自定義的內容對應上。

三、繪製堆積面積圖

繪製堆疊的面積圖只需要geom_area()函式再加上一個離散變數對映到fill就可以輕鬆實現,先忙咱小試牛刀一下。

set.seed(1234)
year <- rep(1990:2015, times = 2)
type <- rep(c('A','B'),each = 26)
value <- c(runif(26),runif(26, min = 1,max = 1.5))
df <- data.frame(year = year, type = type, value = value)
ggplot(data = df, mapping = aes(x = year, y = value, fill = type)) + geom_area()

一幅堆疊的面積圖就輕鬆繪製成功,但我們發現,堆疊的順序與圖例的順序恰好相反,不用急,只需要加一句命令即可:

ggplot(data = df, mapping = aes(x = year, y = value, fill = type)) + geom_area() + guides(fill = guide_legend(reverse = TRUE))

如果需要為每一塊麵積圖的頂部加上一條直線,可以通過如下兩種方式:

ggplot(data = df, mapping = aes(x = year, y = value, fill = type)) + geom_area(colour = 'black', size =1, alpha = .7) + guides(fill = guide_legend(reverse = TRUE))

其中,colour設定面積圖邊框的顏色;size設定邊框線的粗細;alpha設定面積圖和邊框線的透明度。

ggplot(data = df, mapping = aes(x = year, y = value, fill = type)) + geom_area(alpha = 0.6) + geom_line(colour = 'black', size = 1, position = 'stack', alpha = 0.6) + guides(fill = guide_legend(reverse = TRUE))

該方法是通過新增堆疊線條(必須設定geom_line()中position引數為‘stack’,否則只是添加了兩條線,無法與面積圖的頂部重合)。這兩幅圖的區別在於第二種方式沒有繪製面積圖左右邊框和底邊框。在實際應用中,建議不要在面積圖中繪製邊框線,因為邊框的存在可能產生誤導

四、繪製百分比堆積面積圖

在面積圖中,也可以方便快捷的繪製出百分比堆積面積圖,具體操作如下:

set.seed(1234)
year <- rep(1990:2015, times = 4)
type <- rep(c('A','B','C','D'),each = 26)
value <- c(runif(26),runif(26, min = 1,max = 1.5), runif(26, min = 1.5,max = 2), runif(26, min = 2,max = 2.5))
df <- data.frame(year = year, type = type, value = value)
ggplot(data = df, mapping = aes(x = year, y = value, fill = type)) + geom_area(position = 'fill', alpha = 0.6) + guides(fill = guide_legend(reverse = TRUE))

但通過這種方式(設定面積圖的positon='fill')存在一點點小缺陷,即無法繪製出百分比堆積面積圖頂部的線條,該如何實現呢?這裡只需要對原始資料集做一步彙總工作,讓後按部就班的繪製面積圖即可。

 library(dplyr)

df_by_type <- group_by(.data = df, year)

df_summarize <- mutate(.data = df_by_type, value2 = value/sum(value))

有關dplyr包的用法可參考: 

強大的dplyr包實現資料預處理

ggplot(data = df_summarize, mapping = aes(x = year, y = value2, fill = type)) + geom_area(alpha = 0.6) + geom_line(colour = 'black', size = 1, position = 'stack', alpha = 0.6) + guides(fill = guide_legend(reverse = TRUE))

哈哈,大功告成,就這麼簡單。

Chap5. 散點圖

概述

散點圖通常用來刻畫兩個連續型變數之間的關係。

散點圖

geom_point()
  1. 引數值:shape(),size=2,colour()
  2. 更改配色與點形:scale_colour/shape_brewer/manual()
  3. 儘量將不需要高精度的變數對映給圖形的大小和顏色屬性。
  4. 呼叫scale_size_area()函式使資料點的面積正比於變數值。
  5. 處理圖形重疊問題(overplotting):
    • 使用半透明的點
    • 將資料分箱(bin),並用矩形表示(適用於量化分析)stat_bin2d()
    • 將資料分箱(bin),並用六邊形表示stat_binhex(packages:”hexbin”)
    • 使用箱線圖
    • 離散x:呼叫geom_point(position_jitter())函式給資料點增加隨機擾動。
  6. 添加回歸模型擬合線:stat_smooth(method=lm,level=0.95)
  7. 新增自己構建的模型擬合線:geom_line(data=predicted,size=1)
  8. dlply()ldply()函式:切分資料,對各個部分執行某一函式,並對執行結果進行重組。
  9. 散點圖中新增模型係數:+ annotate(parse = TRUE)函式新增文字。利用expression()檢驗輸出結果
  10. 新增邊際地毯(Marginal rugs):geom_rug()
  11. 新增標籤:geom_text(aes(label=xxx),size=xx,x=xx+0.1)
    • vjust=1:標籤文字的頂部與資料點對齊
    • vjust=0:標籤文字的底部與資料點對齊
    • hjust=1/0:右對齊/左對齊
    • 通常先設定hjust()vjust()的值為0或1,然後再調整x或y的值來調整文字標籤的位置.
    • 對數座標軸:需令x或者y乘以一個數值才可以。
    • 去掉不需要的標籤:將不需要刻畫出來的標籤賦值為NA
  12. 繪製氣泡圖:geom_point()scale_size_area(max_size=15)
  13. 散點圖矩陣:base基礎繪圖系統,pairs()

散點圖通常用來刻畫兩個連續型變數之間的關係,資料集中的每一條觀測都由散點圖中的一個點來表示。在散點圖中也可以加入一些直線或曲線,用來表示基於統計模型的擬合。當資料集記錄很多時,散點圖可能會彼此重疊,這種情況往往需要一些預處理操作。

1 基本散點圖

散點圖可以用來描述兩個連續變數之間的關係,一般在做資料探索分析時會使用到,通過散點圖發現變數之間的相關性強度、是否線性關係等。 

使用geom_point()繪製散點圖,並分別對映一個變數到x和y。

1

2

library(gcookbook)

ggplot(heightweight, aes(x=ageYear, y=heightIn)) + geom_point()

基本散點圖

可以使用shape和size分別指定點型和點的大小,如果點型包括填充和描邊的話,可用fill和color分別指定填充色和描邊色。

2 基於類別型變數分組

可將分組變數(因子或字元變數)賦值給顏色或形狀屬性,實現分組散點圖的繪製

可以將因子和字串等類別型變數對映到散點的顏色或形狀。

1

2

library(gcookbook)

ggplot(heightweight, aes(x=ageYear, y=heightIn, shape=sex, color=sex)) + geom_point()

分組散點圖

set.seed(112)
x <- rnorm(100,mean = 2,sd = 3)
y <- 1.5+2*x+rnorm(100)
z <- sample(c(0,1),size = 100,replace = TRUE)
df <- data.frame(x = x,y = y,z = z)
# 將數值型變數轉換為因子型變數
df$z <- factor(df$z)

#分組變數賦值給顏色屬性
ggplot(df,aes(x = x,y = y,colour = z))+
geom_point(size = 3)

#分組變數賦值給形狀屬性
ggplot(df,aes(x = x,y = y,shape = z))+
geom_point(size = 3)

# 分組變數同時賦給顏色屬性和形狀屬性
ggplot(df,aes(x = x,y = y,shape = z,colour = z))+
geom_point(size = 3)+
scale_color_brewer(palette = "Accent")+
scale_shape_manual(values = c(2,16))

注意點的形狀,21-25之間的點的形狀,既可以賦值邊框顏色,又可以賦值填充色。

將離散型變數或因子對映給顏色屬性或形狀屬性

x <- c(10,13,11,15,18,20,21,22,24,26)
y <- c(76,60,70,58,55,48,44,40,26,18)
z <- c(100,120,300,180,80,210,30,95,145,420)
df <- data.frame(x = x,y = y,z = z)
# 將連續型變數對映給顏色屬性
ggplot(df,aes(x = x,y = y,colour = z))+
  geom_point(size = 3)

圖例上,顏色越深而對應的值越小,如何將值的大小與顏色的深淺保持一致?只需要人為的設定色階,從低到高設定不同的顏色即可

3 基於連續型變數對映

當然,還可以將連續型變數對映到散點的顏色或大小等存在漸變的屬性上,從而呈現三個連續型變數之間的關係。其中人眼對於x軸和y軸所對應變數的變化更為敏感,而對顏色和大小的變化則不那麼敏感。 

1

2

library(gcookbook)

ggplot(heightweight, aes(x=ageYear, y=heightIn, size=weightLb, color=weightLb)) + geom_point()

連續散點圖

同時對映類別型變數和連續型變數,並設定散點的面積正比於連續型變數的大小,預設為非線性對映。

1

2

library(gcookbook)

ggplot(heightweight, aes(x=ageYear, y=heightIn, size=weightLb, color=sex)) + geom_point(alpha=.5) + scale_size_area()

多種對映

# 將連續型變數對映給顏色屬性,同時設定雙色梯度
ggplot(df,aes(x = x,y = y,colour = z))+geom_point(size = 3)+scale_colour_gradient(low = "lightblue",high = "darkblue")

# 將連續變數對映給大小屬性
ggplot(df,aes(x = x,y = y,size = z))+ geom_point()

# 將連續型變數賦給顏色屬性或大小屬性,自定義雙色梯度,色階間隔順序由低到高
ggplot(df,aes(x = x,y = y,fill = z))+ geom_point(shape = 21,size = 3)+
scale_fill_gradient(low = "lightblue",high = "darkblue",breaks = c(100,150,200,300,350,400))

# 自定義球大小的間隔
ggplot(df,aes(x = x,y = y,size = z))+geom_point()+
scale_size_continuous(breaks = c(100,150,200,250,300,350,400),guide = guide_legend())
# scale_size(breaks = c(100,150,200,250,300,350,400))結果一樣

# 將連續變數值的大小與球的大小成比例
ggplot(df,aes(x = x,y = y,size = z))+geom_point()+scale_size_area(max_size = 10)
# scale_size_area()可以確保數值0對映為0,max_size保證對映最大的點的大小

 4 處理散點重合

處理散點重合的基本思路包括:

當資料點非常多時,可能會導致資料點重疊嚴重,處理方法如下: 
1)使用半透明的點 
2)資料分箱,並用矩形表示{stat_bin2d()} 
3)資料分箱,並用六邊形表示{stat_binhex()} 
4)使用二維密度估計,並將等高線新增到散點圖中{stat_density2d()} 
5)向散點圖中新增邊際地毯

set.seed(112)
x <- rnorm(10000)
y <- rnorm(10000,0,2)
df <- data.frame(x = x,y = y)
# 不作任何處理
ggplot(df,aes(x = x,y = y))+
geom_point()

# 使用透明度處理點的重疊問題
ggplot(df,aes(x = x,y = y))+geom_point(alpha = 0.1)

# 分箱,並用矩陣表示
ggplot(df,aes(x = x,y = y))+stat_bin2d()

預設情況下,stat_bin2d()函式將x軸和y軸的資料點各分位30段,即引數900個箱子;使用者還可以自定義分段個數,以及箱子在垂直和水平方向上的寬度。

# 設定bins為50,
ggplot(df,aes(x = x,y = y))+stat_bin2d(bins = 50)+scale_fill_gradient(low = "steelblue",high = "darkred",limits = c(0,100),breaks = c(0,25,50,100))

分箱的具體做法是,將點分箱,並統計每個箱中點的個數,然後通過某種方法視覺化這個數量

# 分箱,用六邊形表示,箱子水平和豎直方向的寬度各為0.2,0.3;
# 圖例標度範圍0-100,顯示在圖例上的值(0,25,50,100)

ggplot(df,aes(x = x,y = y))+stat_bin_hex(binwidth = c(0.2,0.3))+
scale_fill_gradient(low = "lightgreen",high = "darkred",limits=c(0,100),breaks = c(0,25,50,100))

# 使用stat_density2d作二維密度估計,並將等高線新增到散點圖中 
ggplot(df,aes(x = x,y = y))+geom_point()+stat_density2d()

#使用大小與分佈密度成正比例的點,不新增等高線
ggplot(df,aes(x = x, y = y)) +stat_density2d(geom = 'point', aes(size = ..density..),contour = FALSE) + scale_size_area()

#使用瓦片圖展示資料分佈密度情況
ggplot(df,aes(x = x, y = y)) + stat_density2d(geom = 'tile',aes(fill = ..density..),contour = FALSE)

#向散點圖中新增邊際地毯(軸須線)
ggplot(faithful,aes(x = eruptions, y = waiting)) + geom_point() + geom_rug()

#通過邊際地毯,可以快速檢視每個座標軸上資料的分佈密疏情況。還可以通過向邊際地毯線的位置座標新增擾動並設定size減少線寬,從而減輕邊際地毯線的重疊程度。
ggplot(faithful, aes(x = eruptions, y = waiting)) +geom_point() +geom_rug(position = 'jitter', size = 0.1)

  • 設定透明度;
  • 使用矩形和六邊形等分箱,並且用顏色表示密度。

1

2

3

4

5

6

7

8

9

10

11

sp <- ggplot(diamonds, aes(x=carat, y=price))

# 未處理

sp + geom_point()

# 設定透明度

sp + geom_point(alpha=.1)

sp + geom_point(alpha=.01)

# 矩形分箱並設定漸變顏色

sp + stat_bin2d(bins=50) + scale_fill_gradient(low="lightblue", high="red")

# 六邊形分箱並設定漸變顏色

install.packages("hexbin")

sp + stat_binhex() + scale_fill_gradient(low="lightblue", high="red")

以下為六邊形分箱的結果。

六邊形分箱

當x軸和y軸對應一個或兩個離散型變數時,例如雖然對應數值,但是數值僅取某些離散點,可以給散點圖新增擾動,使得散點分離開來。 

1

2

3

4

5

6

7

sp <- ggplot(ChickWeight, aes(x=Time, y=weight))

# 未處理

sp + geom_point()

# 新增擾動

sp + geom_point(position="jitter")

# 僅新增水平方向上的擾動

sp + geom_point(position=position_jitter(width=.5, height=0))

 5 新增擬合線

使用stat_smooth()或geom_smooth()新增擬合線和置信域。 

1

2

3

4

5

6

7

8

9

10

11

12

library(gcookbook)

sp <- ggplot(heightweight, aes(x=ageYear, y=heightIn))

# 預設,loess區域性加權多項式擬合

sp + geom_point() + stat_smooth()

# 線性擬合,95%置信域

sp + geom_point() + stat_smooth(method=lm)

# 99%置信域

sp + geom_point() + stat_smooth(method=lm, level=0.99)

# 不加置信域

sp + geom_point() + stat_smooth(method=lm, se=FALSE)

# 修改配色

sp + geom_point(color="grey60") + stat_smooth(method=lm, se=FALSE, color="black")

以下使用Logistic迴歸擬合一個二分類的樣本,可以看出V1和classn具有二分類關係,Logistic迴歸曲線也說明了這一點。 

1

2

3

4

5

6

library(MASS)

b <- biopsy

b$classn[b$class=="benign"] <- 0

b$classn[b$class=="malignant"] <- 1

head(b)

ggplot(b, aes(x=V1, y=classn)) + geom_point(position=position_jitter(width=.3, height=.06), alpha=.4, shape=21, size=1.5) + geom_smooth(method="glm", method.args=list(family="binomial"))

Logistic迴歸

如果已經將類別型變數對映到散點的顏色或形狀,則在新增擬合線時會分別為每一組新增一條擬合線。可以看到身高隨著年齡增長而增加,到一定年齡後停止增長,且男性比女性平均身高更高。

1

ggplot(heightweight, aes(x=ageYear, y=heightIn, color=sex)) + geom_point() + scale_color_brewer(palette="Set1") + geom_smooth()

分組擬合

散點圖矩陣

散點圖矩陣用於展示多幅散點圖,pairs()函式可以建立基礎的散點圖矩陣,以下程式碼包含mpg、disp、drat和wt中任意兩者的散點圖。

1

pairs(~ mpg + disp + drat + wt, data=mtcars, main="Basic Scatter Plot Matrix")

pairs()函式建立的散點圖矩陣

car包的scatterplotMatrix()函式也可以生成散點圖矩陣,並支援以下操作:

  • 以某個因子為條件繪製散點圖矩陣;
  • 包含線型和平滑擬合曲線;
  • 在主對角線放置箱線圖、密度圖或者直方圖;
  • 在各單元格的邊界新增軸須圖。

1

2

library(car)

scatterplotMatrix(~ mpg + disp + drat + wt, data=mtcars, spread=FALSE, lty.smooth=2, main="Scatter Plot Matrix via car Package")

spread=FALSE選項表示不新增展示分散度和對稱資訊的直線。

scatterplotMatrix()函式

再來一個scatterplotMatrix()函式的使用例子,主對角線的核密度曲線改為了直方圖,並且直方圖以汽車氣缸數為條件繪製。 

1

2

library(car)

scatterplotMatrix(~ mpg + disp + drat + wt|cyl, data=mtcars, spread=FALSE, diagonal="histogram", main="Scatter Plot Matrix via car Package")

scatterplotMatrix()函式另一個例子

相關推薦

R語言學習基本語法

ggplot2圖形之基本語法: ggplot2的核心理念是將繪圖與資料分離,資料相關的繪圖與資料無關的繪圖分離 ggplot2是按圖層作圖 ggplot2保有命令式作圖的調整函式,使其更具靈活性 ggplot2將常見的統計變換融入到了繪圖中。 ggplot的繪圖有以下幾個特

R語言學習矩陣的建立

R語言的實質實質上是與matlab差不多的,都是以矩陣為基礎的, 建立矩陣的方法如下 y <- matrix(c(1,2,3,4),nrow = 2,ncol = 2) 實際上如果已經指定了行數和值的話 ,列數就可以省略掉,R語言預設是以列為分佈的,實質上就是按列

R語言學習簡單線性迴歸

從許多方面來看,迴歸分析都是統計學的核心。它其實是一個廣義的概念,通指那些用一個或多個預測變數(也稱自變數或解釋變數)來預測響應變數(也稱因變數、效標變數或結果變數)的方法。即通過已知的點來建立擬合模

R語言學習基礎知識一

1. R物件         物件是R語言兩個主要概念之一,另一個是函式。        R物件可以看作是具有關聯名稱的儲存空間。R中的一切都儲存在物件中。所有的變數、資料、函式都以命名物件的形式儲存

R語言實戰基本統計分析

第7章 基本統計分析 在資料被組織成合適的形式後,可以使用圖形探索資料,接下來是使用數值描述每個變數的分佈,然後則是兩兩探索所選擇變數之間的關係。 本章將評述用於生成基本的描述性統計量和推斷統計量的R函式。 7.1 描述性統計分析 本節介紹分析連續型變

R語言學習

可擴充套件的時間序列xts R的極客理想系列文章,涵蓋了R的思想,使用,工具,創新等的一系列要點,以我個人的學習和體驗去詮釋R的強大。 R語言作為統計學一門語言,一直在小眾領域閃耀著光芒。直到大資料的爆發,R語言變成了一門炙手可熱的資料分析的利器。隨著越來越多的工程背景的人

R語言學習聚類分析

1.動態聚類:k—means 基本思想: (1)選擇K個點作為質心 (2)將每個點指派到最近的質心,形成K個類 (3)重新計算每個類的質心 (4)重複2—3知道質心不發生變化 例項: 優缺點: (1)有效率且不易受初始值的影響 (2)不能處理非球形簇 (3)不能處理不同尺

C語言學習基本語法

分號 如果你有其它程式語言的基礎,相信你已經明白了分號的意義。分號在C語言中與多數語言相同,它代表了語句的結束。也就是說,一個完整的語句必須以分號結尾。 註釋 註釋就像是幫助檔案一樣,它可以幫助我們更快更容易的去閱讀理解程式碼,在編譯的時候它會被編譯器

R語言學習筆記

結構 urn padding 效果 rand html 創建 字符 pri 僅用於記錄R語言學習過程: 內容提要:條件與循環 正文: 格式: 條件 ü if (條件) 執行的程序 else ü if (條件) {函數體 (分行,或者用;隔開) } else 返回值 ü

R語言學習筆記

常用 right 規則 如同 include 順序 rect amp 數據 摘要: 僅用於記錄R語言學習過程: 內容提要: 數據排序:sort()函數、rank()函數、order()函數; 長寬型數據的轉換:stack()函數、reshape()函數、reshape2擴展

R語言學習筆記

head ace row any type 分析 min 記錄 ted 摘要: 僅用於記錄R語言學習過程: 內容提要: 缺失值的識別與處理; 異常值與重復值的處理 正文: 缺失值的識別與處理 導讀: > x <- c(1,2,3,NA,NA,4)

R語言學習-第二課-變數的基本操作

1.變數變換         as.array(x),as.data.frame(x),as.numeric(x),as.logical(x),as.complex(x),as.character(x),...轉換變數型別;使用如下命令可得

Kotlin學習旅(D1)-學習計劃&基本語法

2017年的Google I/O 開發者大會 Kotlin正式成為了Android的官方支援語言 2018年的國慶小長假最後一天 BlueLzy正式開始Kotlin學習之旅 學習計劃 學什麼? 今天是Kotlin學習之旅的第一天,這次Kotlin之旅的行程計劃是

R語言學習筆記set.seed()函式與table函式

set.seed(123)函式,此函式作用是為了,但你需要使用隨機數時,可保證你在執行或者除錯後,計算機所創造的隨機數保持不變。換句話說,如果使用隨機函式rnorm(10)之類的函式,每次執行後,結果都是不一樣的,如果再次之前使用set.seed()函式,則會保證測試資料保持

R語言學習筆記——melt()函式整齊資料

R語言學習筆記(二) melt()函式 melt(data,id.vars,measure.vars,variable.name=“variable”,…,na.rm=FALSE,value.name=“value”,factorsAsStrings=TRUE)

【1】Groovy語言學習:groovy語言簡介及基本語法

Groovy是一種基於JVM的敏捷開發語言,它結合了Python、Ruby和Smalltalk的許多強大的特性。 一、groovy是什麼 簡單地說,Groovy 是下一代的java語言,跟java一樣,它也執行在 JVM 中。作為跑在JVM中的另一種語言

R語言學習系列(資料探勘決策樹演算法實現--ID3程式碼篇)

轉載自:http://blog.csdn.net/hawksoft/article/details/7760868 1、輔助類,用於計算過程和結果儲存 [csharp] view plaincopyprint? /// &

R語言學習筆記: 論如何正確把EXCEL檔案餵給R處理

1 Sub getCSV() 2 '這是網上看到的xlsx批量轉化,而改寫的一個xlsx批量轉化csv格式 3 '1)批量轉化csv參考:http://club.excelhome.net/thread-1036776-2-1.html 4 '2)建立資料夾參考:http://jingyan.b

java學習 基本語法-方法(函式)及練習題

方法(函式):方法是類或物件行為特徵的抽象,也稱為函式。 Java裡的方法不能獨立存在,所有的方法必須定義在類裡。方法的宣告的語法格式: 修飾符 返回值型別 方法名(引數型別 形參1,引數型別 形參2,….){   程式程式碼  return 返回值; } 其中:形式引數: