R語言ggplot2 (一):ggplot2包安裝和初始作圖

2021-02-21 BioMan

ggplot2是一款強大的圖形可視化R包,其作圖方式易於理解,且生成的圖形精美,定製化程度也很高,應該是R裡面最流行的可視化工具。本文關注於ggplot2包的安裝、ggplot2基本作圖語法等。

一 ggplot2的安裝

> install.packages("ggplot2")

#以上代碼也可以直接用install.packages("ggplot2",lib=""~/R/lib"")代替,這樣就只是把包安裝到路徑中,並不會載入路徑,
#不過後續載入包就找不到路徑了,需要在library的時候指定路徑

載入ggplot2包,進行基礎繪圖,現在就用ggplot2自帶的數據集激進型測試,mgp數據集的描述:Fuel economy data from 1999 and 2008 for 38 popular models of car(美國1999年到2008年38種流行汽車的能源使用數據),資料庫詳細說明可參考

https://www.rdocumentation.org/packages/ggplot2/versions/3.0.0/topics/mpg

> library(ggplot2, lib.loc=""~/R/lib"")  #如若ggplot2包安裝在其它路徑,就用lib.loc指定此路徑,如在默認路徑就不需要設置此參數> mpg  #mpg數據集如下# A tibble: 234 x 11manufacturer model   displ  year   cyl trans   drv     cty   hwy fl    class<chr>        <chr>   <dbl> <int> <int> <chr>   <chr> <int> <int> <chr> <chr>1 audi         a4       1.80  1999     4 auto(l… f        18    29 p     comp…2 audi         a4       1.80  1999     4 manual… f        21    29 p     comp…3 audi         a4       2.00  2008     4 manual… f        20    31 p     comp…4 audi         a4       2.00  2008     4 auto(a… f        21    30 p     comp…5 audi         a4       2.80  1999     6 auto(l… f        16    26 p     comp…6 audi         a4       2.80  1999     6 manual… f        18    26 p     comp…7 audi         a4       3.10  2008     6 auto(a… f        18    27 p     comp…8 audi         a4 qua…  1.80  1999     4 manual… 4        18    26 p     comp…9 audi         a4 qua…  1.80  1999     4 auto(l… 4        16    25 p     comp…10 audi         a4 qua…  2.00  2008     4 manual… 4        20    28 p     comp…

 

下面來繪製一個簡單的圖形-散點圖,但是出現了報錯,說是沒有png supoort,用capiabilities()可查看支持的圖片類型,此時需要安裝Cairo包來支持,安裝方法見 https://www.cairographics.org/download/。首先在bash界面種安裝Cairo需要的dev庫文件,然後進入R安裝Cairo即可。

> p <- ggplot(mpg,aes(x=hwy,y=cty)) + geom_point(aes(color=cyl)) + geom_smooth(method="lm")> ggsave(filename="point.png",plot=p)> capabilities()jpeg         png        tiff       tcltk         X11        aqua TRUE        TRUE        TRUE        TRUE       FALSE       FALSE http/ftp     sockets      libxml        fifo      cledit       iconv TRUE        TRUE        TRUE        TRUE        TRUE        TRUE NLS     profmem       cairo         ICU long.double     libcurl TRUE       FALSE        TRUE        TRUE        TRUE        

$ sudo apt-get install libcairo2-dev #For Debian and Debian derivatives including Ubuntu

$ sudo yum install cairo-devel #For Fedora

$ zypper install cairo-devel #For openSUSE

> install.packages("Cairo")

> ggplot(mpg,aes(x=hwy,y=cty)) + geom_point(aes(color=cyl),size=2) #這裡的ggsave保存步驟就神略了,後面也一樣

ggplot(mpg,aes(hwy,cty)) + geom_point(aes(color=cyl)),這是一般繪圖語法,也可以寫成ggplot(mpg) + geom_point(aes(hwy,cty,color=cyl)),aes表示進行數據映射,aes括號外面的參數表示直接賦值(與數據沒有關係了),其中hwy映射到圖上是x軸數據,cty映射到y軸上,cyl映射到顏色屬性,圖上每一個點的三重屬性都得到展示了,一般輸入的坐標軸屬性有1~3個,如只用1個坐標軸屬性值就可畫直方圖,一般畫圖是兩個屬性,在3D圖種會用到3個坐標軸屬性值,而除了映射到坐標軸的屬性值之外,其它的屬性如顏色、大寫、標記、填充、分面等可以自由設置。

上圖是典型的散點圖,cyl設置了點的顏色屬性,由於cyl是數值,所以就當成了連續變量,映射到顏色屬性之後也成了連續的顏色,由於cyl就只有幾類數據,可以按照離散變量來設置。

aes裡面設置的變量都需要有數據映射,如果沒有數據映射直接設置成定值,可在aes外設置,如下設置點的大小。

ggplot(mpg,aes(x=hwy,y=cty)) + geom_point(aes(color=factor(cyl)),size=0.5)

除了geom_point()繪畫點圖之外,還有很多圖形可以繪製,並且可以通過調節參數繪製很多子圖形,以下列舉幾種常見圖形。

geom_line()             折線圖

geom_bar()              圖形圖

geom_histogram()   直方圖

geom_boxplot()       箱線圖

geom_density()        密度函數分布圖

geom_area()            面積圖,覆蓋數據以下的所有區域。

由於ggplot2幾何圖形都是geom_xxx形式,所以可以在R種列出所有的繪圖類型

> library(ggplot2)> ls("package:ggplot2", pattern="^geom_.+")[1] "geom_abline"     "geom_area"       "geom_bar"        "geom_bin2d"     [5] "geom_blank"      "geom_boxplot"    "geom_col"        "geom_contour"   [9] "geom_count"      "geom_crossbar"   "geom_curve"      "geom_density"   [13] "geom_density_2d" "geom_density2d"  "geom_dotplot"    "geom_errorbar"  [17] "geom_errorbarh"  "geom_freqpoly"   "geom_hex"        "geom_histogram" [21] "geom_hline"      "geom_jitter"     "geom_label"      "geom_line"      [25] "geom_linerange"  "geom_map"        "geom_path"       "geom_point"     [29] "geom_pointrange" "geom_polygon"    "geom_qq"         "geom_quantile"  [33] "geom_raster"     "geom_rect"       "geom_ribbon"     "geom_rug"       [37] "geom_segment"    "geom_smooth"     "geom_spoke"      "geom_step"      [41] "geom_text"       "geom_tile"       "geom_violin"     "geom_vline"  

ggplot2在繪圖的時候內部進行統計分析,每種幾何圖形都有默認的統計變換類型,統計變換用stat_xxx形式

> library(ggplot2)> ls("package:ggplot2",pattern="stat_.+")[1] "stat_bin"             "stat_bin_2d"          "stat_bin_hex"        [4] "stat_bin2d"           "stat_binhex"          "stat_boxplot"        [7] "stat_contour"         "stat_count"           "stat_density"        [10] "stat_density_2d"      "stat_density2d"       "stat_ecdf"           [13] "stat_ellipse"         "stat_function"        "stat_identity"       [16] "stat_qq"              "stat_quantile"        "stat_smooth"         [19] "stat_spoke"           "stat_sum"             "stat_summary"        [22] "stat_summary_2d"      "stat_summary_bin"     "stat_summary_hex"    [25] "stat_summary2d"       "stat_unique"          "stat_ydensity"       [28] "update_stat_defaults"

本文來源:https://mp.csdn.net/postedit/82914819

BioMan主要報導生命科學領域熱點資訊、解讀前沿進展、分享科研資料。我們組建了10餘個交流群,歡迎大家進群交流。添加公眾號博主微信:mBioMan(下方二維碼),邀你進群。溫馨提示:添加管理員時,請備註一下研究方向+單位/學校!

相關焦點

  • 第十二講:R作圖-ggplot2繪製箱式圖
    在「R作圖」專輯中,我們將向大家介紹常見圖形的R作圖方法以及對應代碼解釋,幫助大家輕鬆理解和學習R作圖技巧
  • R|ggplot2(四)|stat_ geom_ 和position
    知乎專欄:https://zhuanlan.zhihu.com/Data-AnalysisR第一篇戳:R|ggplot2(一)|一個完整的繪圖流程第二篇戳:R|ggplot2(二)|覆蓋柱狀圖各種需求第三篇戳:R|ggplot2(三)|coord 系列函數坐標軸轉換引用一句Hadley在ggplot2網站上的一句話A layer
  • 跟我學R語言——ggplot2
    ggplot2在R語言packages中佔據著可視化的統治地位,也是眾多科研人員使用最頻繁的R-Packags之一,其可視化功能強大,或許會成為將來科研人員最樂意使用的可視化手段
  • R|ggplot2(五)|scale 修改默認設置
    作者:dwzb,R語言中文社區專欄作者。知乎專欄:https://zhuanlan.zhihu.com/Data-AnalysisR第一篇戳:R|ggplot2(一)|一個完整的繪圖流程第二篇戳:R|ggplot2(二)|覆蓋柱狀圖各種需求第三篇戳:R|ggplot2(三)|coord 系列函數坐標軸轉換第四篇戳:R|ggplot2(四)|stat_ geom_ 和position
  • 初學ggplot2(一)
    翻開《ggplot2:數據分析與圖形藝術》,給人一種耳目一新的感覺,它與傳統的R繪圖工具有本質的區別,借用黃寶臣對ggplot2的幾點總結:1)ggplot2的核心理念是將繪圖與數據分離,數據相關的繪圖與數據無關的繪圖分離;2)ggplot2是按圖層作圖;3)ggplot2保有命令式作圖的調整函數,使其更具靈活性;
  • R可視化01|ggplot2-ggplot2簡介
    IDE)的首席科學家,同時為奧克蘭大學、史丹福大學和賴斯大學的統計系兼職教授;Wickham為了使得數據科學更簡潔、高效、有趣,開發了大量知名R工具包及R相關書籍,部分如下。除此之外,Wickham業餘時間熱愛烘焙和製作雞尾酒,為自己做了一個網站放家庭食譜,感興趣的可以去看看。
  • 第五十七講:R作圖-ggplot2繪製小提琴圖
    通常,小提琴圖也包括數據中位數和四分位數範圍等箱式圖的內容 。函數geom_violin()用於生成小提琴圖。library(ggplot2)p<-ggplot(ToothGrowth, aes(x=dose, y=len))+geom_violin()p# 圖形翻轉p+coord_flip()# 將修剪trim參數設置為FALSEggplot(ToothGrowth, aes(x=dose, y=len))+geom_violin(
  • R語言的ggplot2+ggforce包繪製散點圖並添加分組邊界
    之前的推文介紹過ggplot2繪圖添加橢圓分組邊界和圓形分組邊界,藉助的函數分別是ggforce包裡的geom_circle()函數今天查找桑基圖的資料的時候發現了一份介紹ggforce這個包的使用方法的文章 https://rviews.rstudio.com/2019/09/19/intro-to-ggforce/ ,發現發現添加分組邊界還有其他的實現方法,今天的推文記錄一下
  • R數據科學之ggplot2入門
    本部分需要提前安裝tidyverse包。一個小技巧,在R中設置鏡像只有下載包會有驚喜~(其實就是會快很多啦)options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install.packages('tidyverse')library(tidyverse)我們剛才下載的tidyverse包中有很多可以進行分析的數據集
  • Python語言plotnine VS R語言ggplot2
    ggplot2包是由Hadley Wickham在2005年創造。
  • R|ggplot2(三)|coord 系列函數坐標軸轉換
    作者:dwzb,R語言中文社區專欄作者。知乎專欄:https://zhuanlan.zhihu.com/Data-AnalysisR第一篇戳:R|ggplot2(一)|一個完整的繪圖流程第二篇戳:R|ggplot2(二)|覆蓋柱狀圖各種需求coord_ 系列函數可以改變xy軸的位置,默認使用 coord_cartesian(),我們可以改變成如下幾種coord_cartesian
  • 技術貼 | R語言:ggplot繪圖的Y軸截斷和拼接
    先用coord_cartesian根據Y軸把圖截斷成上下兩份,接著用ggarrange拼接到一起,實現去不要的部分一、準備依賴包ggarrange所需的ggpubr安裝很順利,但是ggpubr所需的tibble出現版本的問題,經卸載重裝tibble搞定。
  • Python科研統計作圖:Plotnine+Seaborn+matplotlib替代R ggplot2
    Python對於完全沒有計算機基礎的同學來說起點稍高,不僅需要基礎的面向對象編程的基礎思維,還需要能夠熟練掌握語法,更具有挑戰性的是,強大的第三方庫都有各自的數據類型和對象屬性以及方法,實際上每次學習一個新的庫,就需要重新去熟悉庫函數的用法,輸入和輸出數據的屬性、以及支持的方法,消耗大量的時間。關於如何學習python安裝、基礎語法、版本選擇、第三方庫安裝等就不再贅述了,可以參考基礎的教程。
  • patchwork實現ggplot多圖拼接
    patchwork簡介ggplot2是大家使用R語言作圖時常用的一個模塊,而patchwork可以將多個ggplot圖片通過簡潔的語法進行拼接,
  • R語言ggplot2做雙Y軸的一個簡單小例子
    參考連結 1、https://ggplot2.tidyverse.org/reference/sec_axis.html2、https://www.r-graph-gallery.com/line-chart-dual-Y-axis-ggplot2.html3、https://github.com/alex-koiter/Weather-and-Climate-figures4、https
  • R語言畫展ggplot2篇-點圖
    :2.000 Min. :1.000 Min.:2.500接下來使用點圖呈現Sepal.Length的分布。#載入ggplot2library(ggplot2)#基礎版本的點圖ggplot(iris, aes(Sepal.Length)) + geom_dotplot()
  • ggplot2 | 使用ggplot2工具包繪製地圖
    ggplot2工具包用於繪製地圖的有如下幾個函數:這些函數中,最常用的是前兩個函數,本篇就來介紹這兩個函數。加載相關工具包和示例數據:library(ggplot2)library(patchwork)library(sf)library(RColorBrewer)library(tidyverse)data <- socviz::county_data
  • ggplot2你需要知道的都在這...
    R語言裡面一個比較重要的繪圖包——ggplot2,是由Hadley Wickham於2005年創建,於2012年四月進行了重大更新
  • 入門 ggplot2 的圖形語法
    ggplot2 包是 Hadly Wickham 開發(除 ggplot2 外,還有 plyr 和 reshape2 包)的一款通過 「+」,以圖層疊加的搭配組合,易於實現數據可視化的 R 包。ggplot2 以美輪美奐的統計製圖能力位居各類繪圖軟體排名前列,同時此包功能也在增加。此文簡單介紹 ggplot2 的基本原理和操作,便於大家對 ggplot2 快速入門。
  • ggplot2拓展功能:局部放大和邊際密度圖
    library(ggplot2)p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point(aes(color = Species), size = 3, alpha = 0.6) + scale_color_manual(values = c("#00AFBB", "#E7B800