Matplotlib 子图 y 轴刻度与上面的图重叠

2023-11-21

我正在尝试绘制 3 个子图,它们之间没有任何空白。默认 y 轴刻度标签使用显示在 y 轴右上角的刻度(下例中的 1e-8),除了与上面的图重叠的下面两个图之外,这很好。有人知道怎么修这个东西吗?下面是一个小例子。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from matplotlib.ticker import MaxNLocator

x = np.arange(0,200)
y = np.random.rand(200) * 10e-8


fig = plt.figure(figsize=(10,15))
gs1 = gridspec.GridSpec(3, 3)
gs1.update(left=0.1, right=0.9, bottom=0.5, hspace=0.0)
ax0a = plt.subplot(gs1[0, :])
ax0b = plt.subplot(gs1[1, :])
ax0c = plt.subplot(gs1[2, :])


ax0a.set_xticklabels([])
ax0b.set_xticklabels([]) 

ax0a.plot(x,y)
nbins = len(ax0a.get_xticklabels())
ax0a.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))
ax0b.plot(x,y)
ax0b.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))
ax0c.plot(x,y)
ax0c.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))

plot

所以一种解决方案是使用 mtick,

import matplotlib.ticker as mtick

ax0a.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.1e'))
ax0b.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.1e'))
ax0c.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.1e'))

但我希望能够将刻度向左移动,这样如果可能的话它就在轴之外。


我有两个选择你可能想看看。

首先,自己设置轴位置和大小:

# your imports and data above
fig = plt.figure()
ax0a = fig.add_axes([0.1, 0.1, 0.8, 0.25])
ax0b = fig.add_axes([0.1, 0.39, 0.8, 0.25], sharex=ax0a)
ax0c = fig.add_axes([0.1, 0.68, 0.8, 0.25], sharex=ax0a)
ax0a.set_xticklabels([])
ax0b.set_xticklabels([]) 
ax0a.plot(x,y)
nbins = len(ax0a.get_xticklabels())
ax0a.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))
ax0b.plot(x,y)
ax0b.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))
ax0c.plot(x,y)
ax0c.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))
plt.show()

enter image description here

第二个选项是手动调整偏移文本的位置和字体大小:

# your original code minus data and imports
fig = plt.figure()
gs1 = gridspec.GridSpec(3, 3)
gs1.update(left=0.1, right=0.9, bottom=0.5, hspace=0.0)
ax0a = plt.subplot(gs1[0, :])
ax0b = plt.subplot(gs1[1, :])
ax0c = plt.subplot(gs1[2, :])
ax0a.set_xticklabels([])
ax0b.set_xticklabels([]) 
ax0a.plot(x,y)
nbins = len(ax0a.get_xticklabels())
ax0a.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))
ax0b.plot(x,y)
ax0b.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))
ax0c.plot(x,y)
ax0c.yaxis.set_major_locator(MaxNLocator(nbins=nbins, prune='upper'))

# play around with location and font of offset text here
ax0a.get_yaxis().get_offset_text().set_x(-0.075)
ax0a.get_yaxis().get_offset_text().set_size(10)
ax0b.get_yaxis().get_offset_text().set_x(-0.075)
ax0b.get_yaxis().get_offset_text().set_size(10)
ax0c.get_yaxis().get_offset_text().set_x(-0.075)
ax0c.get_yaxis().get_offset_text().set_size(10)
plt.show()

enter image description here

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

Matplotlib 子图 y 轴刻度与上面的图重叠 的相关文章

  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • 如何将交互式 matplotlib 图形插入 tkinter 画布

    我正在尝试将交互式 matplotlib 图形 具有滑块 重置按钮和单选按钮的图形 放入 tkinter Canvas 中 我已成功添加非交互式图表 但当它变为交互式时找不到问题 我尝试将所有内容更改为使用 matplotlib Figur
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • javac 响应“不是文件”,但文件存在

    当我使用 javac 编译一个 Java 文件时 它响应错误not a file 代替file not found 所以我尝试在 WSL 环境中编译它 它可以很好地编译相同的文件 然后我意识到可能是因为我把文件放在了OneDrive下 所以
  • 如何使用 .NET 从 SSRS 报告获取数据源信息

    我目前正在制作一个 ASP Net 和 C 页面 这是一些报告的前端 我还想从与报告相同的数据源运行一些查询 每个报告仅使用 1 个数据源 是否可以使用 ReportingService2005 或 ReportExecutionServi
  • 在 Eclipse 中一次更改多个文件的文本编码

    我的 Eclipse 项目中有一些 UTF 8 HTML 模板 Eclipse 一直将它们视为具有不同的编码 它说编码是 由内容决定的 我想强制正确的编码 我可以对单个文件强制使用它 但为父文件夹设置编码不会影响其中的文件 因为属性表中没有
  • 限制可执行文件在特定计算机上运行的最简单方法

    我正在尝试创建一个只能在一台机器上运行的可执行文件 实现这一目标的最简单方法是什么 许可证文件 或者是否有一个类似于网络连接 MAC 的机器地址 我可以将其硬编码到可执行文件中 如果它只在一台机器上运行 那么 只需保护该机器并仅将可执行文件
  • jQuery 幻灯片图像转换

    我的 jQuery 幻灯片有问题 我似乎无法弄清楚 在图像转换期间 幻灯片将闪烁白色 而不是很好地淡入下一张图片 我相信这与以下代码行有关 slideshow img first fadeOut 1000 next fadeIn 1000
  • iOS 11 主屏幕 Web 应用程序中的 Cookie 过期

    iOS 11 自 iOS 11 0 1 起仍然存在问题 主屏幕 Web 应用程序和 Cookie 似乎存在问题 当从服务器设置 cookie 时 iOS 11 似乎会间歇性地删除 cookie 其他时候 当服务器使 cookie 过期时 i
  • 如何判断按下的是哪个 SHIFT 键?

    在我的游戏中 我希望能够使用左右 Shift 键来实现不同的功能 在Java 或其他语言 中 有什么方法可以区分这两者吗 The KeyEvent class has only VK SHIFT which corresponds to b
  • Python 相当于 R 的 poly() 函数?

    我试图了解如何使用 scikit learn 或其他模块 在 R 中复制 poly 函数 例如 假设我在 R 中有一个向量 a lt c 1 10 我想生成三阶多项式 polynomial lt poly a 3 我得到以下信息 1 2 3
  • 在 C# 中将对象数组转换为 XML

    我知道没有内置转换器可以将对象数组转换为 XML 是否有一种快速基本的方法可以从数组中创建 XML 以帮助我在这个 XML 和我拥有的另一个 XML 之间进行 LINQ to XML 联接 您可以使用 Linq to XML 将现有数据结构
  • array.find 不适用于 Babel

    我正在使用 Babel 转译我的 ES2015 代码 然而它并没有翻译find对于数组 以下行引发错误TypeError options find is not a function let options 2 23 4 options f
  • 通过 PHP 加载图像

    我正在尝试通过 PHP 加载图像 但我不知道如何 文件名存储在数据库中 例如image jpg if GET image Client requesting image so retrieve it from DB id mysql rea
  • 如何让 gcc 跳过错误,但仍然输出它们。

    是否可以强制 gcc 报告错误 但继续编译它们 本质上 我试图在 c 文件中生成错误列表 但 gcc 总是在出现第一个错误时终止 我已经在谷歌上搜索了一段时间 据我所知 这并不是一个明显需要解决的问题 当 GCC 无法继续前进时 它就会终止
  • NodeJS keydown/keyup 事件

    我有兴趣看看是否可以将功能绑定到用户按下 释放键盘上的按键 到目前为止 我已经能够通过以下方式获取按键事件keypress模块和process stdin的原始模式 var keypress require keypress keypres
  • 错误:应用程序:transformClassesWithDexBuilderForDebug

    我在这个包中有一个 HillfortStore 类 package org wit hillforts models 弄乱了类中的包名称 缺少 s package org wit hillforts model 将类导入到具有错误包名的其他
  • 为什么一些有经验的程序员在变量之前写与值的比较? [复制]

    这个问题在这里已经有答案了 可能的重复 如何检查是否相等 0 i 或 i 0 为什么在 C 中经常看到 null variable 而不是 variable null 我一直在查看一些奇怪的教程以及一些 DirectX 代码 并注意到许多经
  • 如何读取特定文件夹内的所有文件

    我想读取 c net 中特定文件夹内的所有 xml 文件 XDocument doc2 XDocument Load PG SMNR XMLDataSourceUtil GetXMLFilePath Locale Products cate
  • 从 CLOB(包含 XML)中提取特定值,同时为表的每一行创建一个分隔字符串。某些行上的 CLOB 值可能为空

    一些背景 数据库是Oracle 我正在尝试为表的每一行创建一个分隔字符串 分隔字符串的某些值必须来自 CLOB 包含 XML 某些行上的 CLOB 可能为空 这就是问题所在 例如 我有一个表 Item 其中包含以下行 Item ID Ite
  • 重新安装 Microsoft Visual Studio Asp.net MVC 5 脚手架扩展

    我在 Asp Net MVC 5 和 Visual studio 2013 中遇到脚手架问题 我尝试通过首先卸载扩展 Microsoft Visual Studio Asp net MVC 5 Scaffolding 来重新安装它 但我找不
  • AngularJS 和 Windows 8 路由错误

    我正在尝试使用 Visual Studio 2012 在 Windows 8 1 上使用 AngularJS 创建 HTML5 JS CSS3 应用程序 我目前坚持将参数发送到其他视图 当谷歌搜索时 我看到几个使用的例子 a href li
  • Matplotlib 子图 y 轴刻度与上面的图重叠

    我正在尝试绘制 3 个子图 它们之间没有任何空白 默认 y 轴刻度标签使用显示在 y 轴右上角的刻度 下例中的 1e 8 除了与上面的图重叠的下面两个图之外 这很好 有人知道怎么修这个东西吗 下面是一个小例子 import numpy as