ggpubr包学习笔记之轻松修改图形参数

简介

越学习包ggpubr越感觉其功能强大,本文主要讲解一下如何修改图形参数,我们知道ggplot2有着十分强大的绘图功能,但是其参数之复杂足以让人望而却步。ggpubr提供的函数ggpar()可以十分轻松地让我们修改图形参数,并且可以无缝对接到ggplot图形中。ggpar()可以修改以下图形参数:

  • 图形标题,包括坐标轴标题以及图例标题
  • 图例的位置以及外观
  • 颜色必需的能修改
  • 坐标轴limits
  • 坐标转换
  • 坐标刻度
  • 主题
  • 翻转等

安装包

#two ways to isntall the ggpubr package
install.packages("ggpubr")
#install the packages from the Github
devtools::install_github("kassambara/ggpubr")

绘图

library(ggpubr)#load ggpubr
#basic plots
p <- ggboxplot(ToothGrowth, x="dose", y="len", color="dose")
p
#add grids by the function grids()
p+grids(linetype="dashed")
#add panel borders lines by the function border()
p+border("black")
#change background color
p+bgcolor("#BFD5E3")+border("#BFD5E3")

修改标题以及坐标轴标签

p2 <- ggpar(p,
            title = "Box plot created with ggpubr",
            subtitle = "Length by dose",
            caption = "Source: ggpubr",
            xlab = "Dose (mg)",
            ylab = "Teeth length",
            legend.title = "Dose (mg)")
p2

修改标题以及标签的字体

ggpar(p2, 
      font.title = c(14, "bold.italic", "red"),
      font.subtitle = c(10, "orange"),
      font.caption = c(10, "orange"),
      font.x = c(14, "blue"),
      font.y = c(14, "#993333"))

当然也可以直接用函数font()

p2+
  font("title", size = 14, color = "red", face = "bold.italic")+
  font("subtitle", size = 10, color = "orange")+
  font("caption", size = 10, color = "orange")+
  font("xlab", size = 12, color = "blue")+
  font("ylab", size = 12, color = "#993333")

从上面可以看出我们可以一次性完成添加标题以及修改字体

ggpar(p,
      title = "Plot of length \n by dose",
      xlab = "Dose (mg)",
      legend.title = "Dose (mg)",
      font.title = c(14, "bold.italic", "red"),
      font.x = c(14, "bold", "#2E9FDF"),
      font.y = c(14, "bold", "#E7B800"))

修改图例位置与外观

ggpar(p,
      legend = "right", legend.title = "Dose (mg)")+
  font("legend.title", color="blue", face = "bold")+
  font("legend.text", color = "red")

颜色修改

ggpar()中有一个参数palette,即调色板,除了可以我们自定义颜色外,还可以调用RColorBrewer中的调色板以及包ggsci中的专门用于学术杂志的配色。

#use custom color palette
ggpar(p, palette = c("#00AFBB", "#E7B800", "#FC4E07"))
#use the RColorBrewer palette
ggpar(p, palette = "Dark2")
ggpar(p, palette = "grey")
#use the ggsci palette
ggpar(p, palette = "npg")#nature

当然也可以直接用ggpubr中的函数color_palette()以及fill_palette()

#jco color palette
p+color_palette("jco")
#custom color
p+color_palette(c("#00AFBB", "#E7B800", "#FC4E07"))

颜色梯度

ggpubr提供了两个函数用来处理颜色梯度:gradient_color()和gradient_fill()
通过一个例子来看如何运作

#first create a scatter plot
p3 <- ggscatter(mtcars, x="wt", y="mpg", color="mpg", size = 2)
#change the gradient color
#use one custom color
p3+gradient_color("red")
#use two colors
p3+gradient_color(c("blue", "red"))
#three colors
p3+gradient_color(c("blue", "white", "red"))
#use the RColorBrewer palette
p3+gradient_color("RdYlBu")

gradient_fill()用法也一样,不过是填充,这里就不演示了。

修改坐标轴limits、scales

#change y axis limits
ggpar(p, ylim = c(0, 50))
#change y axis cale to log2
ggpar(p, yscale = "log2")
#format  axis scale
ggpar(p, yscale = "log2", format.scale = TRUE)#format.scale=TRUE说明y轴刻度也会scale
#也可以直接用yscale()
p+yscale("log2", .format = TRUE)

自定义坐标轴标签及刻度

#change the font of x and y axis texts
#rotate x and y texts
p+
  font("xy.text", size = 12, color = "blue", face = "bold")+
  rotate_x_text(45)+
  rotate_y_text(45)
#remove ticks and axis texts
p+rremove("ticks")+
  rremove("axis.text")

修改主题

默认主题为theme_pubr(),可以调用包ggthemes里面的主题

library(ggthemes)
p+ggthemes::theme_economist()

移除ggplot组件

通过ggpubr::rremove()可以移除组件:

p <- ggboxplot(ToothGrowth, x="dose", y="len", ggtheme = theme_igray())
p
p+rremove("grid")

SessionInfo

sessionInfo()
## R version 3.4.1 (2017-06-30)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 16.04.3 LTS
## 
## Matrix products: default
## BLAS: /usr/lib/atlas-base/atlas/libblas.so.3.0
## LAPACK: /usr/lib/atlas-base/atlas/liblapack.so.3.0
## 
## locale:
##  [1] LC_CTYPE=zh_CN.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=zh_CN.UTF-8        LC_COLLATE=zh_CN.UTF-8    
##  [5] LC_MONETARY=zh_CN.UTF-8    LC_MESSAGES=zh_CN.UTF-8   
##  [7] LC_PAPER=zh_CN.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] ggthemes_3.4.0 ggpubr_0.1.5   magrittr_1.5   ggplot2_2.2.1 
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_0.12.12       bindr_0.1          knitr_1.17        
##  [4] munsell_0.4.3      colorspace_1.3-2   R6_2.2.2          
##  [7] rlang_0.1.2        stringr_1.2.0      plyr_1.8.4        
## [10] dplyr_0.7.3        tools_3.4.1        grid_3.4.1        
## [13] gtable_0.2.0       htmltools_0.3.6    yaml_2.1.14       
## [16] lazyeval_0.2.0     rprojroot_1.2      digest_0.6.12     
## [19] assertthat_0.2.0   tibble_1.3.4       bindrcpp_0.2      
## [22] ggsci_2.7          RColorBrewer_1.1-2 purrr_0.2.3       
## [25] glue_1.1.1         evaluate_0.10.1    rmarkdown_1.6     
## [28] labeling_0.3       stringi_1.1.5      compiler_3.4.1    
## [31] scales_0.5.0       backports_1.1.0    pkgconfig_2.0.1

联系方式:

wechat: yt056410
Email: tyan@zju.edu.cn
QQ: 1051927088
GitHub: https://github.com/YTLogos
简书: http://www.jianshu.com/u/bd001545cf0b
博客: https://ytlogos.github.io/

个人简介:

严涛
浙江大学作物遗传育种在读研究生(生物信息学方向)
伪码农,R语言爱好者,爱开源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 简介 文章较长,点击直达我的博客,浏览效果更好。本文内容基本是来源于STHDA,这是一份十分详细的ggplot2使...
    taoyan阅读 50,863评论 7 159
  • Matplotlib 入门教程 来源:Introduction to Matplotlib and basic l...
    布客飞龙阅读 31,761评论 5 162
  • 由于在实验一中已经配置好Acadia的网络设置,所以这次直接插上网线,使用ssh进行远程登录。 实验目的 深入理解...
    lmzqwer2阅读 2,064评论 0 1
  • 首先介绍下什么样的应用集成第三方支付(支付宝、微信支付)会被苹果拒接。 其一:APP内是实物类的商品购买是可以使用...
    悟2023阅读 351评论 0 1
  • 凌晨一点零二分,到达机场,叶苒拖着疲惫的身体走了出来,拎着两个箱子去了酒店,收拾起烦躁的心情趴在床上就睡着了,...
    __Kimble阅读 210评论 0 0