ggplot2入門簡介

早聞ggplot2包的強大功能,找到了程序開發作者Hadley Wickham大神的一個關於ggplot2的課程。第一課時就是intro to ggplot2,本文是將這個課時的PPT翻譯並搬運過來,完成我的學習任務,同時也動手添加了一些課程中的代碼,算是ggplot2包的初上手。

  • Hadley Wickham:助理教授/ Dobelman Family Junior Chair 統計學院 / 萊斯大學(中間不知道翻譯過來是啥,留著了......)
  • 課程網址:ggplot2
  • 一句話概括data analysis:數據分析是讓數據變得可理解、可學習、可視的一個過程
  • 數據分析的流程

  • 學習一門新的語言是困難的!了解ggplot2,先從比較簡單的散點圖開始
  • 繪製散點圖,調用mpg數據集,以汽車排量為橫軸,hwy(耗油量?)為縱軸繪製散點圖

library(ggplot2)mpgqplot(displ, hwy, data = mpg)

  • 在這個散點圖上,可不可以調整顯示設置(比如形狀、顏色和尺寸)顯示更多的變數,或者添加facetting(面層?)(以小倍數顯示不同的子集)? 註:colour=class進去,圖示和顏色根據class列內容自動調整

qplot(displ, hwy, colour=class,data = mpg)

  • 該你啦! 嘗試改變顏色、尺寸和形狀等變數繪製圖形。離散和連續性變數有區別嗎?如果你用多個圖形參數設置會發生什麼?

    測試設置連續型變數時顯示效果:

測試設置多個圖形參數時顯示效果:

qplot(displ, hwy, colour=class,size=model,shape=manufacturer,data = mpg)

  • 工作流程:打開幻燈片的副本,這樣你就可以複製粘貼代碼。對於複雜的命令,先將它們寫入腳本編輯器,然後複製粘貼。
  • 顏色形狀尺寸對連續性變數和離散型變數的支持情況(即寫函數時shape的值不能是連續性變數)

  • 面層:小倍數顯示數據的不同子集,在探索條件關係和處理海量數據時非常有用(直白點就是說在一幅圖形裡面同時顯示小尺寸的其他圖形,方便找出問題)
  • 測試以cy1區分散點圖的顯示效果:

#facet_grid(.~ Name) :按Name分面並且Name 內容顯示在頂部qplot(displ, hwy, data = mpg) + facet_grid(.~ cyl)

  • 測試以drv和cy1共同區分散點圖的顯示效果:

#facet_grid(name1 ~ name2):按行分name1,按列分name2qplot(displ, hwy, data = mpg) + facet_grid(drv ~ cyl)

  • 測試以class區分散點圖的單元格顯示效果:

#facet_wrap(~ class):單元格分qplot(displ, hwy, data = mpg) + facet_wrap(~ class)

SCALES設置成free後 每個圖都有刻度

qplot(displ, hwy, data = mpg) + facet_wrap(~ class,scales="free")

  • 分面總結():

    facet_grid(): 2維網格圖, 行 ~ 列, (.)點表示沒有分隔開;

    facet_wrap(): 1d ribbon wrapped into 2d(翻譯成:1維帶狀圖纏繞成2維圖? .......感覺用起來就是把數據分了各組再處理
  • 這張圖有什麼問題?

  • geom控制顯示的類型

qplot(cty, hwy, data = mpg, geom = "jitter", colour = class) + geom_smooth(method = "lm")

  • reorder函數有強大的作用

  • 閱讀reorder函數的幫助文檔. 以hwy的中位數為排序依據,重新繪製之前的圖形。

    怎麼把 jittered points放在 boxplots的上面?

嘗試解決代碼

qplot(reorder(class,hwy,FUN = median),hwy,data=mpg,geom=c("boxplot","jitter"))

其他:

使用reorder函數時候遇到問題,沒看懂它具體怎麼用的,嘗試了自己寫代碼想用分組再求分位數再排序,不過最後沒能實現。最終是發現了添加FUN=median語句能比較方便的解決那個排序問題。

group_by(mpg,class)c<-summarise(group_by(mpg,class), med=median(hwy))cqplot(reorder(class,med),med,data=c)

不過上面的代碼倒是能反應class的排序是正確的。。。

OVER~


推薦閱讀:

經管類核心期刊地域分布數據可視化
那些年倒騰的R語言學習筆記,全都在這裡了~
什麼是專業圖表與商業圖表?
上帝視角——給世界一個特寫~
智聯Python相關職位的數據分析及可視化-Pandas&Matplotlib篇

TAG:ggplot2 | R编程语言 | 数据可视化 |