R語言—ggplot2簡單學習


1 初識ggplot2

1.1 功能

  • 一個作圖包

  • 可以創建圖表,如散點圖、柱狀圖、線圖,將數據可視化

1.2 要素

  • 數據(data)和映射(mapping)
  • 幾何對象(Geometric)
  • 標尺(scale)
  • 統計變換(Statistics)
  • 坐標系統(Coordinante)
  • 圖層(layer)
  • 分面(Facet)
  • 主題(Theme)

1.3 理念

  • ggplot2將數據,數據到圖形要素的映射,以及和數據無關的圖形要素繪制分離
  • ggplot(data,aes(x,y))+(初始化圖形並指定數據源和作圖變量)

​ geom_type()+ (指定圖形的類型)

​ annotate()+ (添加文本注釋)

​ labs()+ (修改住坐標和坐標軸標題)

​ ~~~

1.4 邏輯

  • 按照圖層進行疊加,通過“+”進行疊加

1.5 一些作圖中用的函數

函數 添加 選項
geom_bar() 條形圖 color、fill、alpha
geom_boxplot() 箱型圖 color、fill、alpha、notch、width
geom_density() 密度圖 color、fill、alpha、linetype
geom_histogram() 直方圖 color、fill、alpha、linetype、binwidth
geom_hline() 水平線 color、alpha、linetype、size
geom_jitter() 抖動點 color、size、alpha、shape
geom_line() 線圖 colorvalpha、linetype、size
geom_point() 散點圖 color、alpha、shape、size
geom_rug() 地毯圖 color、side
geom_smooth() 擬合曲線 method、formula、color、fill、linetype、size
geom_text() 文字注解 很多
geom_violin() 小提琴圖 color、fill、alpha、linetype
geom_vline() 垂線 color、alpha、linetype、size

2 作圖

2.1 散點圖

library(ggplot2)

ggplot(mtcars,aes(mpg,wt))+geom_point

image-20211115174729192

2.2 線性圖

ggplot(data,aes(mpg,x,y))+geom_line()

2.3 柱狀圖

  • 查看頻率的分布情況

​ ggplot(data,aes(x))+geom_bar()

ggplot(mtcars,aes(cyl))+geom_bar()
ggplot(mtcars,aes(factor(cyl)))+geom_bar()

image-20211115215054690

  • 堆積柱形圖
ggplot(mtcars,aes(factor(cyl),fill=factor(am)))+geom_bar()

image-20211116144854642

  • 簇狀柱形圖
ggplot(mtcars,aes(factor(cyl),fill=factor(am)))+geom_bar(position="dodge")

image-20211116151037277

2.4 直方圖

查看變量的分布情況

ggplot(data,aes(x))+geom_hisogram()

ggplot(mtcars,aes(mpg))+geom_histogram()

2.5 密度圖

  • 查看變量頻率分布的情況

​ ggplot(data,aes(x))+geom_density()

​ ~~~

​ # 根據vs進行分組

​ #color: 是對圖形的邊緣、點和線進行描繪

​ #fill 是進行填充

ggplot(mtcars,aes(mpg,color=factor(vs)))+geom_density()

image-20211116153319136

ggplot(mtcars,aes(mpg,fill=factor(vs)))+geom_density()

image-20211116153528169

2.6 箱型圖

  • 查看變量的統計值分布

    ggplot(data,aes(分類變量x,y))+geom_boxplot()

    ggplot(mtcars,aes(factor(vs),mpg))+geom_boxplot()
    
    image-20211116154436439

3 分組組圖

3.1

ggplot(mtcars,aes(wt,mpg,color=qsec))+geom_point()

image-20211116154713881

  • 進行分組
ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()

image-20211116154912647

3.2 aes參數

統一圖層的顏色,參數在aes外面

4 分面作圖

下面是兩個經常要用到的分面函數。

​ facet_wrap(facets, nrow = NULL, ncol = NULL, scales = "fixed", shrink = TRUE, as.table = TRUE, drop = TRUE)

​ facet_grid(facets, margins = FALSE, scales = "fixed", space = "fixed", shrink = TRUE, labeller = "label_value", as.table = TRUE, drop = TRUE)

其中facet_wrap和facet_grid不同在於facet_wrap是基於一個因子進行設置,facets表示形式為:變量(單元格) 而facet_grid是基於兩個因子進行設置,facets表示形式為:變量變量(行列),如果把一個因子用點表示,也可以達到facet_wrap的效果,也可以用加號設置成兩個以上變量

4.1 軸刻度一致

  • 單變量作圖

    ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(vs~.)
    
    image-20211116162142004
    gplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(.~vs)
    
    image-20211116162244239

4.2 刻度不一致

不同縱軸刻度

不同橫軸刻度

ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(~vs,scales="free")
image-20211116164658182

​ # 這里把scales 設置成free之后,可以看出每個分面都有自己的橫坐標刻度,可以單獨對x軸或y軸設置

  • nrow,ncol 分面索要設置成的行和列,參數為數值,表示幾行或者幾列
  • scales 參數fixed表示固定坐標軸刻度,free表示反饋坐標軸刻度,也可以單獨設置成free_x或free_y
  • shrink 也和坐標軸刻度有關,如果為TRUE(默認值)則按統計后的數據調整刻度范圍,否則按統計前的數據設定坐標。
  • drop 表示是否去掉沒有數據的分組,默認情況下不顯示,邏輯值為FALSE
  • as.table 和小圖排列順序有關的選項。如果為TRUE(默認)則按表格方式排列,即最大值(指分組level值)排在表格最后即右下角,否則排在左上角。
  • margins 通過TRUE或者FALSE表示否設置而一個總和的分面變量,默認情況為FALSE,即不設置
  • space 表示分面空間是否可以按照數據進行縮放,參數和scales一樣

5 調整圖像的元素

5.1 形狀

  • 形狀:geom_XXX(shape=x),x=1,2,3...,不同數值是不同的形狀
  • 大小:size=x,x=1,2,3...,數值越大,尺寸越大

5.2 顏色

  • color:是對圖形的邊緣、點和線進行描繪
  • fill:填充圖形內部的顏色
  • 指定填充一種顏色:直接在aes外部填寫,color="某種顏色"

5.3 文本注釋

annotate("text",x=,y=,label="")

​ text :表示添加類型為文本

​ x=,y=表示在指定位置上放上文本

​ label :表示填寫的文本內容

5.4 標題

labs(little="",x="",y="")

5.5 加線條

  • 加豎線:geom_vline(xintercept=)

  • 加橫線:geom_hline(yintercept=)

5.6 xy軸互換

​ coord_flip()

5.7 調整軸刻度的范圍

  • x軸:xlim(下限,上限)

  • y軸:ylim(下限,上限)

5.8 修改軸上的值

  • X:scale_x_continuous(breaks(),labels=c()

  • Y:scale_y_continuous(breaks(),labels=c()

舉例

ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+
geom_point()+
annotate("text",x=4,y=20,label="yes")+
labs(title="hello",x="xxx",y="yyy")+
geom_vline(xintercept=3)+
geom_hline(yintercept=20)+
xlim(3,4)+ylim(15,25)
image-20211116170116860
ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+
geom_point()+
annotate("text",x=4,y=20,label="yes")+
labs(title="hello",x="xxx",y="yyy")+
geom_vline(xintercept=3)+
geom_hline(yintercept=20)+
xlim(3,4)+
ylim(15,25)+
scale_x_continuous(breaks = c(3.00,3.25,3.50,3.75,4.00),labels=c("a","b","c","d","e"))
image-20211116170418746


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM