截断堆积柱状图绘制教程

本教程原文链接:截断堆积柱状图绘制教程

欢迎大家转载!!!!

本期教程

写在前面

堆积柱状图是柱状图的常见类型之一,也是平时使用概率较高的图形之一。我们前期发布了很多个柱状图的绘制教程,若你刚兴趣可以自行查看。堆积柱状图,最近也发布了一个相对详细的教程,基于R语言 | 绘制个性化堆积柱状图。

对于截断图的绘制,也是相对比较简单,因为我们柱状图和堆积柱状图都是基于ggplot2绘制。因此,基本全部的代码都是可以通用。我们次教程,也是基于前期的教程进行修改即可。

截断堆积柱状图绘制

导入所需的R包和数据

library(ggplot2) 
library(cowplot)
library(dplyr)
library(tidyr)
library(ggbreak)
library(ggsignif)
library(ggpubr)
library(EnvStats)
library(stats)

导入数据

请结合自己的数据进行导入!!!

我们这里需要长数据,需要将宽数据转换成长数据

data_df <- gather(data, key = "Group", value = "Value", -Category)
data_df

绘制基础图形

# 绘制柱状堆积图
ggplot(data_df, aes(Category, y = Value , fill = Group))+
  #geom_bar(stat = "identity", position = "fill")+
  geom_bar(stat = "identity", position = "stack")+
  scale_y_continuous(expand = c(0, 0), 
                     labels = scales::number_format(accuracy = 1)  ## 设置Y轴保留一位小数点
                     )+
  scale_x_discrete(expand = c(0,0.5))

我们可以自行先设置主题,以便于后期的图形绘制。

mytheme01 <- theme_classic()+
  theme(axis.line = element_line(size = 1),  ## 粗细
        text=element_text(family = "sans",colour ="black",size = 12),
        axis.text.x = element_text(color = "black", size = 12),
        axis.text.y = element_text(color = "black",size = 12),
        axis.ticks = element_line(size = 0.6,colour = "black"),
        axis.ticks.length = unit(1.5,units = "mm"),
        #legend.position = "none",
        strip.background = element_blank()
       )
mytheme02 <- theme_classic() +
  theme(
    text = element_text(family = "sans", colour = "gray30", size = 12),
    axis.line = element_line(size = 0.6, colour = "gray30"),
    axis.ticks = element_line(size = 0.6, colour = "gray30"),
    axis.ticks.length = unit(1.5, units = "mm"),
    plot.margin = unit(c(1, 1, 1, 1), units = "inches")
  )

图形修改和截断设置

ggplot(data_df, aes(Category, y = Value , fill = Group))+
  #geom_bar(stat = "identity", position = "fill")+
  geom_bar(stat = "identity", position = "stack")+
  scale_y_continuous(expand = c(0, 0), 
                     labels = scales::number_format(accuracy = 1)  ## 设置Y轴保留一位小数点
                     )+
  scale_x_discrete(expand = c(0,0.5))+
  scale_y_break(c(33,70),
                  scales = "free", #'fixed', 'free'
                  )+

  ## 设置颜色
  scale_fill_manual(values = c("#386cb0", "#fdc086", "#1b9e77","#a6cee3","#bebada","#e5c494"))+
  labs(x = "Season", y = "Percentage", fill = NULL) +
  theme_classic()

堆积柱状图柱子参数修改

p1 <- ggplot(data_df, aes(Category, y = Value , fill = Group))+
  #geom_bar(stat = "identity", position = "fill")+
  geom_bar(stat = "identity", 
           position = "stack",
           color = "black", ## 柱边颜色
           width = 0.5,    ## 柱子宽度
           size = 1.0     ## 粗细 
           )+
  scale_y_continuous(expand = c(0, 0), 
                     labels = scales::number_format(accuracy = 1)  ## 设置Y轴保留一位小数点
                     )+
  scale_x_discrete(expand = c(0,0.5))+
  scale_y_break(c(33,70),
    scales = "free", #'fixed', 'free'
    expand = c(0, 0),
    ## 修改坐标轴
    ticklabels = c(70,90,110,120),
    space = 0.25
                  )+

  ## 设置颜色
  scale_fill_manual(values = c("#386cb0", "#fdc086", "#1b9e77","#a6cee3","#bebada","#e5c494"))+
  labs(x = NULL, y = "Number of DEGs", fill = NULL) +
  theme_classic()

设置主题参数

p1 +

  ## 设置颜色
  scale_fill_manual(values = c("#386cb0", "#fdc086", "#1b9e77","#a6cee3","#bebada","#e5c494"))+
  labs(x = NULL, y = "Number of DEGs", fill = NULL) +
  # 设置主题
  theme_classic()+
  theme(axis.line = element_line(size = 1),  ## 粗细
        text=element_text(family = "sans",colour ="black",size = 12),
        axis.text.x = element_text(color = "black", size = 12),
        axis.text.y = element_text(color = "black",size = 12),
        axis.ticks = element_line(size = 1,colour = "black"),
        axis.ticks.length = unit(1.5,units = "mm"),
        legend.position = "none",
        strip.background = element_blank()
       )

添加不同的截断位置

ggplot(data_df, aes(Category, y = Value , fill = Group))+
  #geom_bar(stat = "identity", position = "fill")+
  geom_bar(stat = "identity", 
           position = "stack",
           color = "black", ## 柱边颜色
           width = 0.5,    ## 柱子宽度
           size = 1.0     ## 粗细 
           )+
  scale_y_continuous(expand = c(0, 0), 
                     labels = scales::number_format(accuracy = 1)  ## 设置Y轴保留一位小数点
                     )+
  scale_x_discrete(expand = c(0,0.5))+
  ##'@第一个截断位置
  scale_y_break(c(5,20),
                scales = "free",
                ticklabels = c(20,25,30))+
  ##'@第二个截断位置
  scale_y_break(c(30,70),
    scales = "free", #'fixed', 'free'
    # ## 修改坐标轴
    ticklabels = c(70,90,110,120),
    space = 0.25,
    expand = c(0, 0))+
  ##'@第三个截断位置
  # scale_y_break(c(90,105),
  #               scales = "free",
  #               expand = c(0, 0))+
  ## 设置颜色
  scale_fill_manual(values = c("#386cb0", "#fdc086", "#1b9e77","#a6cee3","#bebada","#e5c494"))+
  labs(x = NULL, y = "Number of DEGs", fill = NULL) +
  # 设置主题
  theme_classic()+
  theme(axis.line = element_line(size = 1),  ## 粗细
        text=element_text(family = "sans",colour ="black",size = 12),
        axis.text.x = element_text(color = "black", size = 12),
        axis.text.y = element_text(color = "black",size = 12),
        axis.ticks = element_line(size = 1,colour = "black"),
        axis.ticks.length = unit(1.5,units = "mm"),
        legend.position = "none",
        strip.background = element_blank()
       )

百分比堆积柱状图进行截断设置

ggplot(data_df, aes(Category, y = Value , fill = Group))+
  geom_bar(stat = "identity", position = "fill")+
  scale_y_continuous(expand = c(0, 0), 
                     labels = scales::number_format(accuracy = 0.1)  ## 设置Y轴保留一位小数点
                     )+
  scale_x_discrete(expand = c(0,0.5))+
  ##'@第一个截断位置
  scale_y_break(c(0.3,0.5),
                scales = "free",
                ticklabels = c(0.5,0.8,1.0),
                expand = c(0,0))+
  scale_fill_manual(values = c("#386cb0", "#fdc086", "#1b9e77","#a6cee3","#bebada","#e5c494"))+
  labs(x = NULL, y = "Number of DEGs", fill = NULL) +
  # 设置主题
  theme_classic()+
  theme(axis.line = element_line(size = 1),  ## 粗细
        text=element_text(family = "sans",colour ="black",size = 12),
        axis.text.x = element_text(color = "black", size = 12),
        axis.text.y = element_text(color = "black",size = 12),
        axis.ticks = element_line(size = 1,colour = "black"),
        axis.ticks.length = unit(1.5,units = "mm"),
        legend.position = "none",
        strip.background = element_blank()
       )

本教程原文链接:截断堆积柱状图绘制教程

欢迎大家转载!!!!

小杜的生信笔记,自2021年11月开始做的知识分享,主要内容是R语言绘图教程转录组上游分析转录组下游分析等内容。凡事在社群同学,可免费获得自2021年11月份至今全部教程,教程配备事例数据和相关代码,我们会持续更新中。

往期教程部分内容











往期部分文章

1. 复现SCI文章系列专栏

2. 《生信知识库订阅须知》,同步更新,易于搜索与管理。

3. 最全WGCNA教程(替换数据即可出全部结果与图形)

  • WGCNA分析 | 全流程分析代码 | 代码一

  • WGCNA分析 | 全流程分析代码 | 代码二

  • WGCNA分析 | 全流程代码分享 | 代码三

  • WGCNA分析 | 全流程分析代码 | 代码四

  • WGCNA分析 | 全流程分析代码 | 代码五(最新版本)


4. 精美图形绘制教程

  • 精美图形绘制教程

5. 转录组分析教程

  • 转录组上游分析教程[零基础]

  • 一个转录组上游分析流程 | Hisat2-Stringtie

6. 转录组下游分析

  • 批量做差异分析及图形绘制 | 基于DESeq2差异分析

  • GO和KEGG富集分析

  • 单基因GSEA富集分析

  • 全基因集GSEA富集分析

小杜的生信筆記 ,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/564180.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA Quartus IP核 打开使用

两种Quartus版本下的IP核&#xff0c;从使用者的角度来看仅仅是配置界面不同&#xff0c;在参数设置和使用方法上基本一致。本文以“MegaWizard Plug-In Manager”中的FIR Compiler IP核使用为例。 Quartus的FIR IP核属于收费IP&#xff0c;如果是个人学习使用需要对IP核单独破…

xhEditor实现WORD粘贴图片自动上传

1.下载示例&#xff1a; 从官网下载 http://www.ncmem.com/webapp/wordpaster/versions.aspx 从gitee中下载 https://gitee.com/xproer/wordpaster-php-xheditor1x 2.将插件目录复制到项目中 3.引入插件文件 定义插件图标 初始化插件&#xff0c;在工具栏中添加插件按钮 效果…

Java——三层架构

在我们进行程序设计以及程序开发时&#xff0c;尽可能让每一个接口、类、方法的职责更单一些&#xff08;单一职责原则&#xff09;。 单一职责原则&#xff1a;一个类或一个方法&#xff0c;就只做一件事情&#xff0c;只管一块功能。 这样就可以让类、接口、方法的复杂度更低…

贪心 | | 将数组和减半的最少操作数

目录 将数组和减半的最少操作数 除 2 将数组和减半的最少操作数 2208. 将数组和减半的最少操作次数 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/minimum-operations-to-halve-array-sum/description/ 由题意可知&#xff0c;我们可以遍历数组&…

【C++类和对象】初始化列表与隐式类型转换

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

OpenLayers6实战,OpenLayers鼠标拖拽方式绘制半圆环形(半圆扇形)

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解如何使用OpenLayers特殊图形绘制,通过鼠标拖拽方式来绘制出半圆环形(半圆扇形)的功能,效果像磁铁一样的半圆弧。 上一章中我们以及实现了四分之一圆环形的特殊图形绘制《OpenLayers6实战,OpenLayers实现鼠标拖拽方式…

【C++】——类与对象引入和认识

创作不易&#xff0c;多多支持&#xff01; 前言 有了上一篇博客的基础以后&#xff0c;就正式进入C类和对象的领域了&#xff0c;如果看完本篇文章对你有用&#xff0c;还请多多支持&#xff01;&#xff01;&#x1f618;&#x1f618; 一 面向过程和面向对象 1.面向过程 …

DFS和回溯专题:组合总和

DFS和回溯专题&#xff1a;组合总和 题目链接: 39.组合总和 参考题解&#xff1a;代码随想录 题目描述 代码纯享版 class Solution {public List<List<Integer>> list_all new ArrayList();public List<Integer> list new ArrayList();public List<…

基于贝叶斯算法的机器学习在自动驾驶路径规划中的应用实例

目录 第一章 引言 第二章 数据准备 第三章 贝叶斯路径规划模型训练 第四章 路径规划预测 第五章 路径执行 第六章 实验结果分析 第一章 引言 自动驾驶技术的发展带来了自动驾驶车辆的出现&#xff0c;而路径规划作为自动驾驶车辆的关键功能之一&#xff0c;对于确定最佳行…

2024年Q1季度平板电视行业线上市场销售数据分析

Q1季度平板电视线上市场表现不如预期。 根据鲸参谋数据显示&#xff0c;2024年1月至3月线上电商平台&#xff08;京东天猫淘宝&#xff09;平板电视累计销量约360万件&#xff0c;环比下降12%&#xff0c;同比下降30%&#xff1b;累计销售额约99亿元&#xff0c;环比下降28%&a…

OSI网络七层协议<随手笔记>

1.OSI OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互连。 一般都叫OSI参考模型&#xff0c;是ISO组织在1985年研究的网络互连模型。该体系结构标准定义了网络互连的七层框架&#xff08;物理层、数据链路层、网络层、传输层、会话层、表示层…

Java工程maven中排包exclude的操作

一、背景 在开发项目时依赖了新的jar包&#xff0c;结果工程启动时报错了&#xff0c;此时应该是包依赖冲突的问题。 二、确定冲突的依赖包 执行mvn clean install&#xff0c;通过报错信息来确定冲突的jar包信息 三、排除冲突包的方案 有两种冲突的情况&#xff1a; 1&am…

电梯节能的推广意义

之前关于电梯能量回馈设备&#xff0c;小伍已经做了很多介绍&#xff0c;那么小伙伴们&#xff0c;他的推广意义你真的了解了么&#xff1f; 第一&#xff1a;节电降耗&#xff0c;电梯在运行过程中会产生大量的惯性能量&#xff0c;这些能量如果不被利用就会浪费。能量回馈技术…

【C语言】每日一题,快速提升(5)!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. strlen函数 2. strcpy函数 3. strcat函数 题目&#xff1a;模拟实现 strlen--strcpy--strcat--三个函数 1. strlen函数 字符串计算 #include <stdio.h…

[笔试训练](二)

004 牛牛的快递_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 使用向上取整函数ceil()&#xff0c;&#xff08;记得添加头文件#include<cmath>&#xff09; #include <iostream> #include <cmath> using namespace std;int main(…

TensorFlow文件读取 --TFRecords文件

TFRecords文件 是一种二进制文件&#xff0c;能够很好的利用内存&#xff0c;更方便复制和移动&#xff0c;并且不需要单独的标签文件 使用步骤 1&#xff09;获取数据 2&#xff09;将数据填入到Example协议内存块&#xff08;protocol buffer&#xff09; 3&#xff09;将协…

冯唐成事心法笔记

文章目录 卷首语 管理是一生的日常&#xff0c;成事是一生的修行PART 1 知己 用好自己的天赋如何管理自我用好你的天赋成大事无捷径如何平衡工作和生活做一个真猛人做自己熟悉的行业掌控情绪如何对待妒忌和贪婪如何战胜自己&#xff0c;战胜逆境真正的高手都有破局思维有时候…

利用动态规划在有向图上实现高效语音识别算法

在现代语音识别系统中&#xff0c;动态规划是一种非常关键的技术。它能够帮助我们将复杂的语音信号转换为可理解的文字信息。在本文中&#xff0c;我们将探讨如何使用动态规划方法在有向图上实现语音识别。我们将首先介绍问题的背景和基本概念&#xff0c;然后提供一个高效的算…

基于开源CrashRpt与微软开源Detours技术深度改造的异常捕获库分享

目录 1、异常捕获模块概述 2、为什么需要异常捕获模块&#xff1f; 3、在有些异常的场景下是没有生成dump文件的 4、开源异常捕获库CrashRpt介绍 5、对开源库CrashRpt的改进 C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持…

NX二次开发UF_VEC(向量运算)常用函数

目录 一、概述 二、函数的介绍 2.1 UF_VEC3_add&#xff08;两向量相加&#xff09; 2.2 UF_VEC3_affine_comb&#xff08;未缩放和缩放后的和&#xff09; 2.3 UF_VEC3_angle_between&#xff08;使用第三个向量确定连个向量的夹角&#xff09; 2.4 UF_VEC3_ask_perpendicu…