ggplot2 左右两个y轴

2024-03-16 20:48
文章标签 ggplot2 左右两个

本文主要是介绍ggplot2 左右两个y轴,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

z两个ggplot 图合并到一起,一个x轴两个y轴

raw_data <- read_delim('./data/GO_pathway.txt', delim = '\t')
head(raw_data)
library(dplyr)
library(Cairo)double_y_axis <- function(p1, p2){g1 <- ggplot_gtable(ggplot_build(p1))g2 <- ggplot_gtable(ggplot_build(p2))# overlap the panel of 2nd plot on that of 1st plotpp <- c(subset(g1$layout, name == "panel", se = t:r))g <- gtable_add_grob(g1, g2$grobs[[which(g2$layout$name == "panel")]], pp$t, pp$l, pp$b, pp$l)# axis tweaksia <- which(g2$layout$name == "axis-l")ga <- g2$grobs[[ia]]ax <- ga$children[[2]]ax$widths <- rev(ax$widths)ax$grobs <- rev(ax$grobs)ax$grobs[[1]]$x <- ax$grobs[[1]]$x - unit(1, "npc") + unit(0.15, "cm")g <- gtable_add_cols(g, g2$widths[g2$layout[ia, ]$l], length(g$widths) - 1)g <- gtable_add_grob(g, ax, pp$t, length(g$widths) - 1, pp$b)# draw itgrid.draw(g)return(g)
}split_fun <- function(x){tmp_split <- strsplit(x, '~')do.call('rbind', tmp_split)[,2]
}
go_data <- raw_data %>%dplyr::filter(grepl('GO',Term) & PValue<0.01) %>%select(c(1,2,3,5)) %>%dplyr::mutate(term = split_fun(Term)) %>%arrange(Category, PValue)
go_data$term <- factor(go_data$term, levels = unique(go_data$term))# ggplot
library(ggplot2)
library(gtable)
library(grid)grid.newpage()# two plots
p1 <- ggplot(go_data)+geom_bar(aes(x = term, y=Count,  fill=Category), stat = 'identity') +
#   geom_line(aes(term, y=PValue, group=1), stat = 'identity', colour="#B00A13") +
#   geom_point(aes(term, y=PValue, group=1),colour="red", size=3, alpha=0.4)+theme_bw() +scale_fill_manual(values = c('#6f359d', '#F28C42'),labels=c('Biological Process', 'Cellular Component'))+theme(axis.text.x = element_text(angle = 40, hjust=1, vjust=1),axis.ticks.x = element_blank(),legend.position='left'# axis.title.y=element_text(vjust=8))+scale_y_continuous(expand = c(0,0), limits=c(0, 30))+xlab('Go Items')+ylab('The number of genes')# coord_fixed(ratio = 0.6)# 控制长宽比
p1p1 <- p1+coord_fixed(ratio = 0.6)# 控制长宽比p2 <- ggplot(go_data, aes(term, PValue, group=1)) +geom_line( stat = 'identity', colour="#B00A13") +geom_point(colour="red", size=3, alpha=0.4)+scale_y_continuous(limits = c(0, 0.02))+# scale_y_reverse()+scale_x_discrete(breaks=NULL)+theme(axis.text.x = element_text(),axis.ticks.x= element_blank(),# panel.background = element_rect(fill = NA),# panel.grid = element_blank(),legend.position='top')+ylab('')+xlab('')
p2# extract gtable
g <- double_y_axis(p1,p2)tiff("Plot600.tiff", type="cairo", width = 14, height = 8, units = 'in', res = 300)
grid.draw(g)
dev.off()# 在右下角的框里调试好图片, 然后采用
# par('din') 获取宽高
CairoPNG('plotCairo.png', width = 13.58, height = 8.2, units='in', dpi=700)grid.draw(g)
dev.off()

这篇关于ggplot2 左右两个y轴的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816678

相关文章

ggplot2高效实用指南 (可视化脚本、工具、套路、配色)

作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源 ggplot2学习笔记之图形排列 R包ggseqlogo |绘制序列分析图 编者按:数据可视化是解析、理解和展示数据不可缺少的一部分。炫或不炫看个人喜好和功底,能否达意是最基本的要求---最合适的图示和配色表达最直观的含义。长文多图预警,这是关于ggplot2使用的极详细教程(190+图),是入门和晋级

R语言可视化入门——使用ggplot2将模拟结果可视化

目录 零、引言一、数据生成二、单参数的展示(不同方法和案例)三、双参数的展示(不同方法和案例)四、后期服务 零、引言 在做科研时候,往往会设计不同的案例,不同参数和不同方法来说明自己模型(方法)的可行性。但是如何将这些元素展现在一张图上就至关重要,本文主要介绍了不同案例不同方法参数下基于ggplot2系统的可视化。具体细节没有细致的讲解,感兴趣的可以自行学习。 一、数据生成

shiny + bootstrap + shinythemes + ggplot2 + sunburst 动态交互式可视化web框架搭建

利用shiny + bootstrap + shinythemes + ggplot2 + sunburst 搭建自己的交互式可视化web

ggplot2又添新神器——ggthemr助你制作惊艳美图

今天在浏览ggplot扩展插件目录的时候,又发现了一款神器——ggthemr。 这是继ggplot2的ggtheme包、RColorBrewer包之后(不算ggtech和ggsci这两个小众包)第三款ggplot配色神器。 既然是神器,那肯定功能超级强大喽,下面就讲讲它强大在哪儿~ 这个包里面提供了将近20宽完善的配色和主题风格模板。每一个模板都拥有完善的标度和主题设定(包括离散标度和连续标

ggplot2包介绍学习

分析数据要做的第一件事情,就是观察它。对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离ggplot2是按图层作图ggplot2保有命令式作图的调整函数,使其更具灵活性ggplot2将常见的统计变换融入到了绘图中。ggplot的绘图有以下几个特点:第一,有明确的起始(以gg

如何用R语言ggplot2画高水平期刊散点图

文章目录 前言一、数据集二、ggplot2画图1、全部代码2、细节拆分1)导包2)创建图形对象3)主题设置4)轴设置5)图例设置6)散点颜色7)保存图片 前言 一、数据集 数据下载链接见文章顶部 处理前的数据: library(readxl)library(reshape2) # reshape2 包是 R 语言中的一个数据处理包,主要用于数据重

如何用R语言ggplot2画折线图

文章目录 前言一、数据集二、ggplot2画图1、全部代码2、细节拆分1)导包2)创建图形对象3)主题设置4)轴设置5)图例设置6)颜色7)保存图片 前言 一、数据集 数据下载链接见文章顶部 数据: library(readxl)data <- read_excel("fig3_line.xlsx", sheet = "Sheet1") 二、g

探索ggh4x包:使用ggplot2扩展包创建多功能图形

简介 ggh4x包是一个ggplot2扩展包。它提供了一些实用函数,这些函数并不完全符合“图形语法”概念——它们可能有点hacky——但仍然可以在调整ggplots时非常有用。例如,调整facet的大小、将多个美学映射到颜色以及为facet指定单独的比例尺。此外,它还是一小部分几何对象geoms、facets、位置positions、指南guides和统计信息stats。 librar

R语言入门 | 使用 ggplot2 进行数据可视化

1.0准备工作 先下好tidyverse包,并进行加载。 install.packages ( "tidyverse" ) library(tidyverse) R 包只需安装一次,但每次开始新会话时都要重新加载。 1.1 数据框  数据框是变量(列)和观测(行)的矩形集合。 下文经常使用mpg 包含了由美

R语言ggplot2包绘制散点图详解

List item R语言的ggplot包可以实现各种复杂的制图功能,本文以散点图为例,介绍ggplot2代码的使用方法。 首先,使用R内置数据attitude绘制complaints和learning的散点图。请注意ggplot2语法和R原生代码的区别。ggplot2采用图层模式,不同图层用“+”叠加。 > head(attitude,3)rating complaints privileg