python matplotlib 坐标轴打断

2023-10-27

想要绘制出如下类型坐标轴断开的图,matplotlib中并没有直接可用的API,但是官方给出了一个demo: broken axis.py
大概说下思路:画出两个共享X轴,完全相同的图,下图取消上边界,下图取消下边界,然后再使用plot画两组平行线就大功告成。
在这里插入图片描述
参照官网例子画的堆积图代码

    def respond_mode_bar(self):
        labels = ['Braking','Right','Left','R&B','L&B']
        # color_list = ['silver', 'red', 'blue', 'orange', 'deepskyblue']
        # color_list = ['blue', 'orange', 'green', 'red', 'olive']
        x = list(self.sub_list)
        y = np.zeros((len(self.sub_list), len(labels)), dtype=np.float)
        y0 = np.zeros(len(self.sub_list), dtype=np.float)
        # fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
        gs = gridspec.GridSpec(2,1, height_ratios=[3,1], hspace=0.15)
        fig = plt.figure(figsize=(8, 4.5))
        ax1 = fig.add_subplot(gs[0,:])
        ax2 = fig.add_subplot(gs[1,:], sharex=ax1)
        ax1.set_ylim(70, 100)
        ax2.set_ylim(0, 10)

        ax1.spines['bottom'].set_visible(False)
        ax2.spines['top'].set_visible(False)
        ax1.xaxis.tick_top()
        ax1.tick_params(labeltop='off')  
        ax2.xaxis.tick_bottom()

        for idx, sub in enumerate (self.sub_list):
            sub = str(sub).zfill(4)
            y[idx,:] = np.array(self.data_dict[sub]['respond_mode'])
        for ii in range(len(labels)):
            if ii==0: ax1.bar(x, y[:,ii], align='center', \
                    label = labels[ii], width=0.6)
            if ii==0: ax2.bar(x, y[:,ii], align='center', \
                     label = labels[ii], width=0.6)
            else:
                y0 = y0 +y[:, ii-1]
                ax1.bar(x, y[:,ii], bottom=y0, align='center', \
                    label = labels[ii], width=0.6)
                ax2.bar(x, y[:,ii], bottom=y0, align='center', \
                    label = labels[ii], width=0.6)
        
        d = .01  # how big to make the diagonal lines in axes coordinates
        kwargs = dict(transform=ax1.transAxes, color='k', clip_on=False)
        ax1.plot((-d, +d), (-d, +d), **kwargs)        # top-left diagonal
        ax1.plot((1 - d, 1 + d), (-d, +d), **kwargs)  # top-right diagonal

        kwargs.update(transform=ax2.transAxes)  # switch to the bottom axes
        ax2.plot((-d, +d), (1 - d*3, 1 + d*3), **kwargs)  # bottom-left diagonal
        ax2.plot((1 - d, 1 + d), (1 - d*3, 1 + d*3), **kwargs)  # bottom-right diagonal

        plt.xlabel('Subject index')
        ax1.set_ylabel('Percentage (%)')
        plt.legend(loc=(0.65, 0.1), title='Evasive Maneuvers', \
                facecolor='w', framealpha=1)
        plt.savefig(self.fig_path+sub+'_respond_mode.png', dpi=300, transparent=True)
        plt.show()

官方参考
https://matplotlib.org/examples/pylab_examples/broken_axis.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python matplotlib 坐标轴打断 的相关文章

  • 是否有与 Java 的 IdentityHashMap 等效的 Python 版本?

    我正在遍历一个数据结构 想要构建一个映射 X gt Y 的字典 其中 X 是我正在遍历的数据结构中的一个字段 Y 是我正在动态构建的数据结构中的一个字段 X 是不可散列的类型 Java的IdentityHashMap的目的是模拟动态字段 由
  • Pandas groupby:根据另一列中的值更改一列中的值

    我会尽力解释我的问题 但我是 Pandas 新手 所以请耐心等待 我有一个 Pandas 数据框df Random ID Seq ID Type Seq Token 0 8 1 User First 1 8 2 Agent Second 2
  • 意外的缩进错误,但缩进看起来正确

    我一直在尝试运行此代码 但它引发了缩进错误 无论我尝试什么 结果都是一样的 如果我删除之前的缩进def str self 和代码的其余部分 它工作正常 但在输出时 它不显示问题 而是显示 问题对象 def str self Indentat
  • 将 Python 脚本导入另一个脚本?

    我正在阅读 Zed Shaw 的 艰难学习 Python 正在学习第 26 课 在本课中 我们必须修复一些代码 这些代码从另一个脚本调用函数 他说我们不必导入它们来通过测试 但我很好奇我们将如何做到这一点 课程链接 http learnpy
  • Pycharm 出现 Kivy 错误 [严重] [应用程序] 无法获取窗口,中止

    我正在尝试让示例 Kivy 代码之一在我的机器上运行 我使用的是 Pycharm 社区版 2017 1 安装了 anaconda python 2 7 和 Kivy 1 9 我已使用项目设置将 Kivy 模块和 Pygame 模块安装到项目
  • 为什么tcl/tkinter只支持BMP字符?

    我正在尝试在基于 tkinter 和 tcl 构建的 gui 中查询和显示 utf 8 编码字符 但是 我发现 tkinter 无法显示 4 字节字符 即大于 U FFFF 的 unicode 代码点 为什么会这样呢 实现非 BMP 字符对
  • 如何在pytorch中动态索引张量?

    例如 我有一个张量 tensor torch rand 12 512 768 我得到了一个索引列表 说它是 0 2 3 400 5 32 7 8 321 107 100 511 我希望从给定索引列表的维度 2 上的 512 个元素中选择 1
  • 我怎样才能用Python中的语音识别来检测一个单词

    我知道如何用 Python 检测语音 但这个问题更具体 如何让 Python 只监听一个单词 然后如果 Python 可以识别该单词则返回 True 我知道 我可以让 Python 一直监听 然后做出类似的东西 伪代码 while True
  • 到底什么是序列?

    蟒蛇docs https docs python org 3 glossary html term sequence有点模棱两可 sequence 一个可迭代对象 支持通过以下方式使用整数索引进行有效的元素访问 getitem 特殊方法并定
  • Panda如何将行分组到不同的时间桶中?

    我有一个带有名为时间戳的日期时间类型列的数据帧 我想根据时间部分的时间戳将数据帧拆分为多个数据帧 每个数据帧包含按其值模 x 分钟进行值的行 其中 x 是变量 请注意e and f不按原来的顺序 以 10 分钟为模 我希望所有时间都以3在一
  • 测试 python 列表的所有元素是否为 False

    如何返回False如果所有元素都在列表中False 给定的列表是 data False False False Using any https docs python org 2 library functions html any gt
  • 查找提供的 Sum 值的组合

    我有一系列这样的数字 myvar 57 71 87 97 99 101 103 113 114 115 128 129 131 137 147 156 163 186 现在我想计算所有这些可能的组合 长度为1到20 其总和等于给定的数字m
  • 忽略 NaN 的列表理解

    我正在尝试构建一个列表理解 其条件是不导入 nan 值 但运气不佳 以下是当前代码以及结果输出 什么条件会将 nan 从列表中删除 def generate labels filtered df columnName return labe
  • 确定 TCP Listen() 队列中当前积压的连接数

    有没有办法找出currentLinux 上 TCP 套接字上等待 Accept 的连接尝试次数 我想我可以在每个事件循环上点击 EWOULDBLOCK 之前计算成功的 Accept 数量 但我使用的是隐藏这些细节的高级库 Python Tw
  • 有一些 numpy.map 吗?

    我可能在这里遗漏了一些明显的东西 但我遗漏了一个功能numpy map 这与 Python 的相同map函数 但将输出收集在numpy大批 例如 我可以有一个图像生成器genImage i 生成 2D 图像 大小 m n 基于单个输入 我想
  • 在 python 中以半小时为增量创建选择列表

    我正在尝试创建一个
  • 将2个暗淡数组“列表列表”输出到python中的文本文件

    简单的问题 我正在创建一个两个暗淡的数组 ddist 0 d for in 0 d 在下面的代码中使用列表 它使用 gis 数据输出距离 我只是想要一种简单的方法来获取数组 列表的结果并将其输出到保持相同的 N N 结构的文本文件 我过去曾
  • python - 从完整地址获取邮政编码

    我有一个数据框 其中一列中有完整地址 我需要创建一个仅包含邮政编码的单独列 有些地址只有五位数字的邮政编码 而其他地址则有额外的四位数字 如何拆分列以获取邮政编码 示例数据 d name bob john address 123 6th S
  • dump() 缺少 1 个必需的位置参数:python json 中的“fp”

    我正在尝试美化 json 格式 但收到此错误 import requests as tt from bs4 import BeautifulSoup import json get url tt get https in pinterest
  • python函数中的Return语句不返回任何内容[重复]

    这个问题在这里已经有答案了 我不明白退货和打印之间的区别 有人告诉我应该在函数语句中使用 return 但它不会返回任何内容 所以我一直在函数中使用 print 但我想了解为什么我的函数中的 return 语句不起作用 def triang

随机推荐

  • 学习笔记-无向图的创建、深度优先遍历、广度优先遍历

    图 为什么要有图 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示一种多对多的关系就需要用到图 图是一种数据结构 其中结点可以具有零个或多个相邻元素 两个结点之间的连接称为边 结点也可以称为顶
  • 机器学习:Logistic回归介绍

    Logistic回归定义 简单来说 逻辑回归 Logistic Regression 是一种用于解决二分类 0 or 1 问题的机器学习方法 用于估计某种事物的可能性 比如某用户购买某商品的可能性 某病人患有某种疾病的可能性 以及某广告被用
  • 【转载】Java Instrument 功能使用及原理

    0 介绍 利用 java lang instrument 做动态 Instrumentation 是 Java SE 5 的新特性 它把 Java 的 instrument 功能从本地代码中解放出来 使之可以用 Java 代码的方式解决问题
  • elasticsearch FunctionScore Java API

    elasticsearch FunctionScore java API 1 使用script FunctionScoreQueryBuilder query QueryBuilders functionScoreQuery queryBu
  • 修改微信小程序官方picker-view日期选择器

    微信小程序问题之picker view日期选择器 项目需求截图 选择出生日期的时候需要用到微信的picker view日期选择器 然后就发现官方picker view组件有一些问题 1 初始化日期不是当前日期 2 选择不同月份 日期都是从1
  • NVIDIA Video Codec SDK简介

    NVIDIA的Video Codec SDK提供API对视频进行加速编解码 最新发布版本为12 0 支持Windows和Linux平台 可从 https developer nvidia com video codec sdk archiv
  • python 操作 doc /docx

    对于python来说操作 doc 需要用到 win32com 安装 pip install win32com 优点 doc所有的操作都可以执行 缺点 如果没有office就死翘翘了 当然也可以com wsp 对于这种需要强制安装xx的不是很
  • Redis系列(一)与同类对比,底层数据结构,阿里云简单部署

    Redis与Memcache Ehcache对比 有持久化需求或者对数据结构和处理有高级要求的应用 选择redis 其他简单的key value存储 选择memcache Memcache适合多读少写 大数据量的情况 如人人网大量查询用户信
  • Docker搭建rtmp视频直播

    一 PC端搭建RTMP服务器 1 安装docker sudo apt get install docker sudo apt get update 2 下载docker nginx rtmp容器 sudo apt get install d
  • html中如何获取表单的数据

    1 使用表单中的id属性获取表单中的数据 在表单的input标签中指定id属性值 在script脚本中可以通过 表格的名称 id名称 value 来访问表单中的值 例如 register form username value 表单代码
  • 整理最新java面试宝典2019

    java面试宝典2019 参照 http www wityx com 3 html 1 meta标签的作用是什么 2 ReenTrantLock可重入锁 和synchronized的区别 总结 3 Spring中的自动装配有哪些限制 4 什
  • 用U盘安装Linux系统

    需要的东西 1 软件 Universal USB Installer 2 U盘 容量至少为4GB 3 linux系统的镜像文件 比如 ubuntu 10 04 3 desktop i386 iso或者ubuntu 10 04 desktop
  • 在排序数组中查找元素的第一个和最后一个位置

    本文就来探究几个最常用的二分查找场景 寻找一个数 寻找左侧边界 寻找右侧边界 而且 我们就是要深入细节 比如不等号是否应该带等号 mid 是否应该加一等等 分析这些细节的差异以及出现这些差异的原因 保证你能灵活准确地写出正确的二分查找算法
  • Alibaba 神器!一招定位 线 上Bug

    尊重原创版权 https www csnovel com hot 43764 html 更多内容参考 https www csnovel com 阿里神器 一招定位 线 上Bug 背景 公司有个渠道系统 专门对接三方渠道使用 没有什么业务逻
  • windows计算机锁屏的快捷键是什么,win10电脑锁屏快捷键是什么

    我们在使用win10操作系统的时候 其中有很多快捷方式我们都是可以直接使用键盘操作而省去鼠标键盘配合操作的 这样做的优点就是会非常的有效率 节省时间而且没有繁琐的步骤 有的小伙伴想知道我们win10的锁屏快捷键是什么 那么现在就让小编来告诉
  • 杰理之蓝牙OTA蓝牙升级【篇】

    命令AT OTA r响应成功 r nOK r n失败 r nERR data r n
  • gitee码云的使用 ----- 将项目上传

    准备工作 首先你得安装好git 安装教程如下 https git scm com downloads 去码云官网注册登录 然后创建仓库按照步骤做完会得到一个https地址 然后下面就会用到 接下来就是如何将自己的项目代码放置到gitee上
  • 记录C++类中的一次函数调用

    引用 之前遇到一次函数调用结果的问题 今天在这里做一下记录 一个基类 一个派生类 两个类中都有一个函数名相同 参数相同 参数不同的函数 创建基类指针指向派生类对象 调用相应的函数 派生类指针指向基类对象 调用相应的函数 求其输出结果 具体看
  • 基于STM32使用超声波HC-SR04模块

    写在前面注意的几点 1 HC SR04模块必须使用5V供电 不能是3 3V 2 若单是测距 无需使用中断 3 Echo和Trig两个引脚可以任意接可用的GPIO 和定时器无关 说一下超声波的工作原理 单片机给Trig引脚一个最少10us的高
  • python matplotlib 坐标轴打断

    想要绘制出如下类型坐标轴断开的图 matplotlib中并没有直接可用的API 但是官方给出了一个demo broken axis py 大概说下思路 画出两个共享X轴 完全相同的图 下图取消上边界 下图取消下边界 然后再使用plot画两组