R-ggplot2 學術箱線圖製作

2021-02-20 DataCharm

之前有和群裡的小夥伴討論說"將之前Python-matplotlib 繪製的圖用R-ggplot2重新繪製",也得到很多小夥伴的響應。本期推文就推出箱線圖(boxplot)的R-ggplot2 繪製方法,大家可以和 Python-matplotlib 箱線圖繪製 這篇文章對比下。

(1)數據預覽

由於數據和之前的數據一樣,且ggplot2 對繪圖數據也是有一定要求,現給出數據如下(部分):

其中Type 中主要含有 Teain sample 和 Test sample 兩種。

(2)數據可視化

R-ggplot2 繪製箱線圖很簡單,主要為 geom_boxplot() ,先採用默認的參數繪製 ,代碼如下:

plot_pir <- ggplot(data = box_data,aes(x = Type,y = AOD_550nm))+     geom_boxplot(aes(fill=Type))+     labs(caption = "Visualization by DataCharm")plot_pir

結果如下:

當然,你也可以更改 x、y,使其"橫向"展示:

plot_pir2 <- ggplot(data = box_data,aes(x = AOD_550nm,y = Type))+     geom_boxplot(aes(fill=Type))+     labs(caption = "Visualization by DataCharm")plot_pir2

結果如下:

雖然默認的格式還不錯,但想要符合學術圖表要求,還是需要們進行定製化修改,如箱線圖的寬、顏色、字體以及一些主題 顏色等,下面我們進行修改。代碼如下:

plot_pir2_ed <- ggplot(data = box_data,aes(x = AOD_550nm,y = Type))+     geom_boxplot(aes(fill=Type),width = 0.4)+     labs(x ='Values',y=NULL,          title = "The boxplot of Train data and Tset data",          subtitle = "Boxplot R-ggplot2 Exercise",          caption = 'Visualization by DataCharm')+     #添加圖序號(a)     geom_text(x=2.4,y=2.3,label='(a)',size=8,family='Times_New_Roman',fontface='bold')+     theme(text = element_text(family = 'Times_New_Roman'),           axis.text = element_text(family = 'Times_New_Roman',size = 13,face = 'bold'),           #去除圖例標題           legend.title = element_blank(),           axis.ticks.length=unit(-0.25, "cm"),            #設置刻度label的邊距           axis.text.x = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")),            axis.text.y = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm"))           )plot_pir2_ed

涉及到的都是簡單的 繪圖函數及繪圖屬性設置。大家可以直接閱讀ggplot2的官網(https://ggplot2.tidyverse.org/reference/theme.html) 進行查看。上述代碼結果如下:

ggplot2 自身帶有多個優秀的 主題風格(theme),下面我們結合主題並設置自定義較利於出版的灰色系顏色,代碼如下:

plot  <- ggplot(data = box_data,aes(x = Type,y = AOD_550nm))+     geom_boxplot(aes(fill=Type),width = 0.4) +     scale_fill_manual(values = c('grey40','grey80'))+     #設置軸範圍     scale_y_continuous(limits = c(-.1,2.5),expand = c(0,0))+     labs(x =NULL,y=NULL,          title = "The boxplot of Train data and Tset data",          subtitle = "Boxplot R-ggplot2 Exercise",          caption = 'Visualization by DataCharm')+     #添加圖序號(a)     geom_text(x=2.4,y=2.3,label='(a)',size=8,family='Times_New_Roman',fontface='bold')+     theme_linedraw()+     theme(text = element_text(family = 'Times_New_Roman'),           axis.text = element_text(family = 'Times_New_Roman',size = 13,face = 'bold'),           panel.grid.major = element_line(colour = "gray50",linetype = 'dashed',size=.57),            panel.grid.minor = element_line(color = "white"),           #去除圖例標題           legend.title = element_blank(),           #加寬圖邊框           panel.border = element_rect(size=1),           #修改刻度線朝裡           axis.ticks.length=unit(-0.25, "cm"),            #設置刻度label的邊距           axis.text.x = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")),            axis.text.y = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm"))           )plot

知識點:

(1)自定義顏色

scale_fill_manual(values = c('grey40','grey80'))

(2)主題選擇:theme_linedraw()

(3)theme()中進行定製化設置 

 theme(text = element_text(family = 'Times_New_Roman'),           axis.text = element_text(family = 'Times_New_Roman',size = 13,face = 'bold'),           panel.grid.major = element_line(colour = "gray50",linetype = 'dashed',size=.57),            panel.grid.minor = element_line(color = "white"),                      legend.title = element_blank(),                      panel.border = element_rect(size=1),                      axis.ticks.length=unit(-0.25, "cm"),                       axis.text.x = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")),            axis.text.y = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm"))           )

結果如下:

或者如下:

使用 theme_classic() 主題,效果如下:

更多主題設置,大家可以查看官網哦。(以自己經驗來說,還是直接查官網 或者 Google)

R-ggplot2 繪製箱線圖還是十分簡單的,不僅擁有豐富 的圖表元素設置函數、主題以及額外的第三方繪圖包。當然,對繪圖數據的要求也比較嚴格。大家覺得和Python 繪製 有什麼不同呢?歡迎在文末 讀者討論 或 進群進行交流討論啊

為了大家更好的學習交流,DataCharm的學習交流群已經建立,由於群的二維碼連接易失效,可以通過掃面下方二維碼,添加本人微信,做自我介紹啊,要不然我都不知道是誰。我拉你入群。偷偷告訴你,群裡的大牛是真多哦

相關焦點

  • 基於ggplot2包繪製SCI學術箱線圖的保姆級教程
    具體含義可通過如下圖表進行說明:圖源網絡,侵刪本期推文使用ggplot2包來繪製箱線圖。1. 加載數據、數據在後臺回復箱線圖即可免費獲取。2. 繪製基本箱線圖使用ggplot2包繪製箱線圖很簡單,主要使用geom_boxplot()函數,先採用默認的參數繪製。
  • R語言學習 - 線圖繪製
    線圖線圖是反映趨勢變化的一種方式,其輸入數據一般也是一個矩陣。
  • R數據科學之ggplot2入門
    displacement, in litres(發動機排量)year:year of manufacture(製造年份)cyl:number of cylinders(氣缸數)trans:type of transmission(變速器類型)drv:the type of drive train, where f = front-wheel drive, r
  • 初學ggplot2(一)
    函數中main參數一致;xlab和ylab為圖形橫縱坐標添加標題,與plot函數中xlab,ylab參數一致。二、幾個簡單的例子下面的例子用到ggplot2包中自帶的數據集diamonds(磚石方面的數據)。#下載並安裝ggplot2包if(!
  • R語言ggplot2 (一):ggplot2包安裝和初始作圖
    本文關注於ggplot2包的安裝、ggplot2基本作圖語法等。一 ggplot2的安裝> install.packages("ggplot2")#以上代碼也可以直接用install.packages("ggplot2",lib=""~/R/lib"")代替,這樣就只是把包安裝到路徑中,並不會載入路徑,#不過後續載入包就找不到路徑了,需要在library的時候指定路徑
  • R可視化01|ggplot2-ggplot2簡介
    PackagesDATA SCIENCE WITH THE TIDYVERSE**ggplot2**for visualising data.dplyr for manipulating data.stringr for working with strings.lubridate for working with date/times.
  • R可視化10|ggplot2-圖層圖形語法 (2)
    本文目錄5、幾何對象(geom)  基本圖(GRAPHICAL PRIMITIVES)  輔助線圖(LINE SEGMENTS)  單個連續變量、單個離散變量圖  兩個連續變量圖  一個離散變量,一個連續變量圖   兩個離散變量圖   continuous
  • R|ggplot2(五)|scale 修改默認設置
    知乎專欄:https://zhuanlan.zhihu.com/Data-AnalysisR第一篇戳:R|ggplot2(一)|一個完整的繪圖流程第二篇戳:R|ggplot2(二)|覆蓋柱狀圖各種需求第三篇戳:R|ggplot2(三)|coord 系列函數坐標軸轉換第四篇戳:R|ggplot2(四)|stat_ geom_ 和position
  • 如何用ggplot2繪製漂亮的統計圖形
    ggplot2 建立在 Wilkinson 語法的基礎上,它關注於圖層(layer)的優先地位,並對其進行調整,以便在 R 中使用。簡而言之,圖形語法告訴我們圖形將數據映射到幾何對象(點、線、條)的美學屬性(顏色、形狀、大小)。圖形還可以包括關於繪圖坐標系統的數據和信息的統計變換。分面(facet)可用於繪製數據的不同子集。
  • R-ggplot2 標準中國地圖製作
    ggplot2 + sf 中國標準地圖繪製cowplot 包實現地圖子圖插入ggplot2 + sf 中國標準地圖繪製本期的繪圖我們是按照如下圖表進行繪製的(該圖來自朋友公號):其實我很早就想試著用R進行此類圖表的繪製了,但由於強大的Arcgis和繪圖進度等原因
  • 數據可視化:Matplotlib vs ggplot2
    今天我們將比較其中的兩個-Matplotlib和ggplot2。為什麼是這兩個?Matplotlib是我學習的第一個可視化庫。但最近我越來越喜歡R語言的ggplot2了,但是今天我們將在這兩個庫中重新創建五個相同的圖,看看代碼和美學方面的進展。
  • R繪圖之ggplot2-散點圖(一)
    上次我們簡單的介紹了ggplot2的做圖基礎,並介紹了如何調整參數,設置分組並添加線性擬合,那麼今天大家跟著圖圖一起來系統的學習一下散點圖的製作
  • R ggplot2 實用系列----折線圖
    ggplot2 是繪製科研論文圖片的強有力工具,是很多其它包依賴的做圖包。
  • Lesson 06 for Plotting in R for Biologists
    本節課主要將繪製以下幾類圖形:條形圖直方圖散點圖箱線圖小提琴圖密度圖點狀圖線圖餅圖韋恩圖數據加載清洗library(tidyverse)箱線圖ggplot(my_data, aes(type, y=size))+geom_boxplot()
  • 教你畫雙分類變量的箱線圖
    添加p值的需求, c("1", "2"), c("0.5", "2") )ggboxplot(ToothGrowth, x = "dose", y = "len",          color = "dose", palette = "jco")+   stat_compare_means(comparisons = my_comparisons)+   stat_compare_means
  • 數據可視化工具對比Matplotlib vs ggplot2
    今天我們將比較其中的兩個-Matplotlib和ggplot2。為什麼是這兩個?Matplotlib是我學習的第一個可視化庫。但最近我越來越喜歡R語言的ggplot2了,但是今天我們將在這兩個庫中重新創建五個相同的圖,看看代碼和美學方面的進展。
  • ggplot繪188圖的第一天:散點圖
    ggplot繪圖A ggplot is built up from a few basic elements:Data: The raw data that you want to plot.image-202102091048324502.調用ggplot,添加圖層#library(ggplot2)library
  • plotmeans圖,用ggplot2這樣畫
    找ggplot2版的plotmeans,找到了,但是現成的代碼不包含樣本數。2.但是可以找到帶有每組樣本數的箱線圖代碼!兩個合起來就好啦代碼實現01.帶有每組樣本數的箱線圖library(tidyverse)x = group_by(iris,Species) %>%summarise(mean = mean(Sepal.Length))library(dplyr)data <- data.frame(  name=c( rep("A",500),
  • R語言畫展ggplot2篇-點圖
    今天用ggplot2實現點圖(Dotplot)的製作。點圖通常用於不同組別間的均數比較,也可以與箱形圖或小提琴圖結合在一起。#查看數據summary(iris)Sepal.Length Sepal.Width Petal.Length Petal.Width Species Min.
  • 實用帖之R-ggplot2 標準中國地圖製作
    這期涉及空間圖表繪製,主要涉及知識點如下:ggplot2 + sf 中國標準地圖繪製本期的繪圖我們是按照如下圖表進行繪製的(該圖來自朋友公號):其實我很早就想試著用R進行此類圖表的繪製了,但由於強大的Arcgis和繪圖進度等原因,導致遲遲沒有進行,這期就進行此類圖表的繪製