R語言繪圖之ggplot2

2021-02-23 R語言交流中心


當我們看到很多優美的繪圖時,你是否會有據為己有的衝動?我反正是有的。那麼今天我們就為大家介紹一下目前在R語言中流行的繪圖包ggplot2。

1. ggplot2的安裝:install.packages("ggplot2")。

2. 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)。

3. ggplot2的函數介紹:

ggplot2裡的所有函數可以分為以下幾類:

用於運算(我們在此不講,如fortify_,mean_等)

初始化、展示繪圖等命令(ggplot,plot,print等)

按變量組圖(facet_等)

真正的繪圖命令(stat_,geom_,annotate),這三類就是實現一個函數一個圖層的核心函數。

微調圖型:嚴格意義上說,這一類函數不是再實現圖層,而是在做局部調整。

aes : 同樣適用於修改geom_XXX() aes參數控制了對哪些變量進行圖形映射,以及映射方式

圖形屬性(aes)橫縱坐標、點的大小、顏色,填充色等

幾何對象函數

描述

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

堆疊處理

4. ggplot2的應用語法

ggplot(data =, aes(x = , y = )) +

geom_XXX(...)+ ... + stat_XXX(...) + ... +

annotate(...)+ ... + labs(...) +

scale_XXX(...)+ coord_XXX(...) + guides(...) + theme(...) +

facet_XXX(...)

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 :控制分組繪圖的方法和排列形式。

歡迎大家學習交流:

相關焦點

  • R語言 ggplot2 繪圖入門,看完你就理解ggplot2的繪圖邏輯了
    R語言最擅長繪圖。R語言最擅長的繪圖包是ggplot2,由於很多朋友沒有接觸過ggplot2,必須要對其語言方式有個初步的認識。
  • Python語言plotnine VS R語言ggplot2
    相對於R中的基礎可視化包,是基於圖形語法的繪圖包,一經提出就迅速受到廣大R語言使用者的喜愛。ggplot2包利用圖層疊加的繪圖方式,往圖像上不斷的添加圖形元素、注釋、統計結果等內容。plotnine庫可以看作是在Python中對ggplot2包的一種實現,方便Python對數據可視化的應用。本文章會分別介紹在R和Python中,如何使用相關的庫進行數據可視化分析。
  • R繪圖之ggplot2—添加注釋
    傳遞給圖層的其他基礎參數,如size, colour, alpha, fill, fontface等na.rm刪除缺失值時是否提醒annotate 函數的參數較為簡單,大多是layer()中的基礎參數第二部分: 添加文本添加文本類幾何對象library(ggplot2)library(ggsci)library
  • Python數據可視化--在Python中調用ggplot進行繪圖
    如果你熟悉R語言,那麼你一定聽過ggplot2,它是R語言中非常好的數據可視化包,容易學習,功能強大。
  • ggplot2包的繪圖邏輯簡介
    在R語言裡,談及繪圖,ggplot2是最出名的繪圖包之一,作為一個繪圖神器,它提供了許許多多的功能給用戶使用,僅用短短幾行代碼,一幅幅高端大氣的圖像便躍然紙上,這可能就是ggplot2包的魅力所在。我們用相同的數據,通過plot函數跟ggplot函數分別繪製散點圖來簡單理解一下兩者的差異:library("ggplot2")    #加載安裝好的ggplot2包plot(iris$Sepal.Length, iris$Sepal.Width) #plot繪圖ggplot(data = iris,aes(x = Sepal.Length
  • R|ggplot2(五)|scale 修改默認設置
    作者:dwzb,R語言中文社區專欄作者。知乎專欄:https://zhuanlan.zhihu.com/Data-AnalysisR第一篇戳:R|ggplot2(一)|一個完整的繪圖流程第二篇戳:R|ggplot2(二)|覆蓋柱狀圖各種需求第三篇戳:R|ggplot2(三)|coord 系列函數坐標軸轉換第四篇戳:R|ggplot2(四)|stat_ geom_ 和position
  • R語言之ggplot2繪圖
    ,也離不開這些漂亮的圖表,好的圖表不止能夠讓閱讀者通俗易懂,更能讓老闆眼前一亮,R語言中的ggplot2包即能滿足,圖表酷炫、簡單明了,使用起來也比較簡單方便,直接調用即可,本文主要介紹該包的一些簡單的用法和作圖技巧。
  • R語言的ggplot2+ggforce包繪製散點圖並添加分組邊界
    之前的推文介紹過ggplot2繪圖添加橢圓分組邊界和圓形分組邊界,藉助的函數分別是ggforce包裡的geom_circle()函數今天查找桑基圖的資料的時候發現了一份介紹ggforce這個包的使用方法的文章 https://rviews.rstudio.com/2019/09/19/intro-to-ggforce/ ,發現發現添加分組邊界還有其他的實現方法,今天的推文記錄一下
  • R語言——ggplot2的繪圖邏輯
    在R語言裡,談及繪圖,ggplot2是最出名的繪圖包之一,作為一個繪圖神器,它提供了許許多多的功能給用戶使用,僅用短短幾行代碼,一幅幅高端大氣的圖像便躍然紙上,這可能就是ggplot2包的魅力所在。我們用相同的數據,通過plot函數跟ggplot函數分別繪製散點圖來簡單理解一下兩者的差異:library("ggplot2")    #加載安裝好的ggplot2包plot(iris$Sepal.Length, iris$Sepal.Width) #plot繪圖ggplot(data = iris,aes(x = Sepal.Length
  • ggplot繪圖系統精華帖~
    本文轉載自公眾號:每天都有進步ggplot2 Pk 基本繪圖
  • R語言數據可視化ggplot2包
    展開一張畫布ggplot2和其他作圖工具不同,它是以圖層覆蓋圖層的方式畫出一個完美圖像的,就像是photoshop裡的圖層,那麼首先我們得有一張畫布(如果沒有安裝R語言和ggplot2請見《 十八-R語言特徵工程實戰
  • 123.R簡介和統計繪圖
    R語言統計繪圖實戰R軟體下載安裝R語言 https://www.r-project.orgRstudio編程集成開發環境(IDE,Integrated Development Environment) https://www.rstudio.comRStudio是一款R語言的IDE,R自帶的環境操作較為複雜,而RStudio很好地解決了該問題,而且它還具有調試
  • R語言可視化——ggplot圖表中的線條
    R語言中ggplot函數系統中涉及到線條的地方有很多,最常見的場景就是我們做geom_line()(折線圖)、geom_path()(路徑圖),以及圖表的繪圖區(panel)、圖表區、網格系統(grid)中所涉及到的線條。今天以一個折線圖為例,簡要說明ggplot函數中關於線條的主要參數及其效果。
  • 地理數據科學培訓班第一課之初識R語言
    windowsFonts( enfont = windowsFont("Cascadia Code"), cnfont = windowsFont("思源宋體"),)enfont = "enfont"cnfont = "cnfont"# 設定 ggplot2 繪圖主題theme_set(theme_ipsum(base_family = 'cnfont'))# 這是設定 R 的基礎繪圖系統的繪圖主題
  • R語言 高階可視化繪圖系統:ggplot2入門 | 第8講
    更加深入學習ggplot2,請參考《ggplot2: 數據分析與圖形藝術》。目 錄引言:ggplot2基本要素1.library(ggplot2)#繪製基本ggplot圖base <- ggplot(mpg, aes(displ, hwy)) + geom_point()p1 <- base + geom_smooth() + labs(title="圖1") #如圖1#用%+%調整映射關係中的數據base <- ggpl
  • ggplot2|詳解八大基本繪圖要素
    #install.packages("ggplot2")library(ggplot2)data(diamonds)set.seed(1234)diamond <- diamonds[sample(nrow(diamonds), 2000
  • Day7:R語言課程 (R語言進行數據可視化)
    4.數據可視化與 `ggplot2`處理大數據時,以圖片的形式顯示信息更有效。可視化應該有自己的整個過程(有很多要知道!)。如果你有興趣了解基本R功能的繪圖,查看課程(https://hbctraining.github.io/Intro-to-R/lessons/basic_plots_in_r.html)。在本課中主要學習ggplot2繪圖。
  • R語言ggplot繪製峰巒圖繪製
    rm(list=ls())設置工作目錄setwd("C:/Users/Dell/Desktop/R_Plots/19ridge/")使用ggridges包繪製峰巒圖library(ggridges)library(ggplot2
  • 數據科學養成記 之 R語言基礎(2)——關於R包
    R作為一種主力的分析語言有著其獨特的優勢:大量的R包可供大家使用,提供方便快捷的數據分析,挖掘。目前有上千個R包(R package)可供大家使用,可從cran-r 下載。這些包提供了橫跨各種領域、數量驚人的新功能,包括分析地理數據、處理蛋白質質譜,甚至是心理測驗分析的功能。
  • 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