如何在 matplotlib 中生成链接轴

2024-01-08

我正在尝试创建一个带有链接 x 轴 st 的图。顶部和底部刻度/标签是单位测量(焦耳和千焦耳)。我看过 sharex 等的例子,但我的需求如下:

  1. 如何使轴链接到从第一个轴生成第二个刻度线/标签的位置
  2. 当改变一个轴的限制时,另一轴应自动更新

最简单的事情(一点也不优雅)是创建两个 x 变量:

x1 = np.arange(0,10000,1000)
x2 = x1/1000.
y = np.random.randint(0,10,10)

fig, ax = plt.subplots()
ax.plot(x1, y, 'ro')

ax2 = ax.twiny()
ax2.plot(x2,y,visible=False)
plt.show()


这会产生以下结果:

但是当我尝试对其中任何一个设置 x 轴限制时,事情就会崩溃。例如,做ax2.set_xlim(2,5)只改变顶部的轴。

因为我已经知道 x1 和 x2 是相关的,所以我应该如何设置绘图,以便当我更改一个时,另一个会自动得到处理。

非常感谢


看来您想使用具有指定比例的寄生轴。有一个example http://matplotlib.org/examples/axes_grid/parasite_simple2.html这个在 matlpotlib 网站上,稍作修改的版本如下。

import matplotlib.transforms as mtransforms
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.parasite_axes import SubplotHost
import numpy as np

# Set seed for random numbers generator to make data recreateable
np.random.seed(1235) 

# Define data to be plotted
x1 = np.arange(0,10000,1000)
x2 = x1/1000.
y1 = np.random.randint(0,10,10)
y2 = y1/5.

# Create figure instance
fig = plt.figure()

# Make AxesHostAxesSubplot instance
ax = SubplotHost(fig, 1, 1, 1)

# Scale for top (parasite) x-axis: makes top x-axis 1/1000 of bottom x-axis
x_scale = 1000.
y_scale = 1.

# Set scales of parasite axes to x_scale and y_scale (relative to ax)
aux_trans = mtransforms.Affine2D().scale(x_scale, y_scale)

# Create parasite axes instance
ax_parasite = ax.twin(aux_trans) 
ax_parasite.set_viewlim_mode('transform')

fig.add_subplot(ax)

# Plot the data
ax.plot(x1, y1)
ax_parasite.plot(x2, y2)

# Configure axis labels and ticklabels
ax.set_xlabel('Original x-axis')
ax_parasite.set_xlabel('Parasite x-axis (scaled)')
ax.set_ylabel('y-axis')
ax_parasite.axis['right'].major_ticklabels.set_visible(False)

plt.show()

这给出了下面的输出

如果您更改了限制ax例如,极限ax_parasite实例自动更新:

# Set limits of original axis (parasite axis are scaled automatically)
ax.set_ylim(0,12)
ax.set_xlim(500,4000)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 matplotlib 中生成链接轴 的相关文章

  • 使用 matplotlib 在图像数据之上对线网格进行像素精确定位

    我试图在 python 库 matplotlib 显示的图像网格顶部精确地覆盖 1 像素宽线的网格 不幸的是 我似乎无法对结果进行足够精细的控制 以实现线网格与数据网格的正确对齐 如下面的代码所示 结果似乎总是很接近 但并不完全正确 我尝试
  • 如何消除 matplotlib 轴的相对偏移

    当我尝试对具有足够大数字的范围进行绘图时 我得到一个所有刻度都有相对偏移的轴 例如 plot 1000 1001 1002 1 2 3 我在横坐标轴上得到这些刻度 0 0 0 5 1 0 1 5 2 0 1e3 问题是如何删除 1e3并得到
  • 向二元 kdeplot 添加标签

    我喜欢 Seaborn 的例子多个双变量 KDE 图 https seaborn pydata org examples multiple joint kde html 但我希望在该示例中使用标准 matplotlib 图例而不是自定义标签
  • matplotlib 中 plt.plot() 的第三个参数有什么作用?

    plt plot 通常接受 x y 和格式 但是 如果我将第三个参数作为数据传递 则会绘制另一条线 我无法理解其中的关系 x np linspace 0 10 5 plt plot x x x label linear plt grid C
  • matplotlib:调整图形窗口大小而不缩放图形内容

    当您调整图形大小时 Matplotlib 会自动缩放图形窗口中的所有内容 通常这是用户想要的 但我经常想增加窗口的大小 为其他东西腾出更多空间 在这种情况下 我希望在更改窗口大小时预先存在的内容保持相同的大小 有谁知道一个干净的方法来做到这
  • Matplotlib:将默认图例 loc 和图例 bbox 更改为锚点

    每次用 pandas 在 matplotlib 中绘图时 为了将图例放在图形之外 我必须执行以下操作 single obj trading curve instrument toppercentile plot legend loc cen
  • 如何使用 matplotlib 面向对象的 API 设置轴刻度和刻度标签

    我需要一些在 Python2 7 下的 Matplotlib pyplot 中绘图的帮助 我想生成一个具有以下 x 轴的图 x 轴应该是这样 https i stack imgur com zcosX jpg 我到目前为止通过使用myaxi
  • IPython自动开启matplotlib交互模式

    我遇到了 IPython 的一些新奇怪行为 我只需重新安装我的 miniconda 所以我现在有了新的 IPython 和 Matplotlib 版本 事实证明 IPython 会自动将 matplotlib 切换到交互模式 这具有令人讨厌
  • 如何在 PyQt5 GUI 中快速绘制 matplotlib 实时绘图

    几年前 我已经尝试过嵌入现场matplotlib中的情节PyQt5图形用户界面 实时绘图显示从传感器捕获的实时数据流 某些过程 我已经成功了 您可以在此处阅读相关帖子 您自己的 GUI 中的 Matplotlib 动画 https stac
  • 如何计算python 2D散点占用面积

    我使用 matplotlib 绘制了这两个 2000 个点的序列 从图片上看 前2000点占用的面积比后2000点要小 但如果我想定量计算2000个点的第一序列和第二序列占用了多少面积 该怎么办 我真的很感谢任何帮助 建议或意见 非常感谢
  • 给定一般 3D 平面方程

    假设我有一个 3D 平面方程 ax by cz d 我如何在 python matplotlib 中绘制它 我看到一些例子使用plot surface 但它接受 x y z 值作为二维数组 我不明白如何将我的方程转换为参数输入plot su
  • ImportError:IDLE 中没有名为 matplotlib 的模块

    当我想在 IDLE 中导入 matplotlib 时 出现以下错误 ImportError No module named matplotlib 我使用mac 我的bash profile中python的PATH是 Setting PATH
  • 如何保存 numpy 数组图像并将它们放入单个文件夹中?

    我有一个 numpy 数组 其中包含 5000 个 28 x 28 图像 5000 28 28 我想将所有这些图像保存为 jpg 文件并将它们全部保存在一个文件夹中 实现这一目标最快 最有效的方法是什么 我尝试使用以下命令将 50 000
  • 在 matplotlib 中使用轴绘制带有子点的图形时出现错误

    我尝试使用下面的代码绘制子图 但是我得到了 AttributeError numpy ndarray object has no attribute boxplot 但改变plt subplots 1 2 它正在用indexerror绘制箱
  • 自定义seaborn jointplot中的轴标签

    我似乎陷入了一个相对简单的问题 但在经过一小时的搜索和大量的实验后无法解决它 我有两个 numpy 数组x and y我正在使用seaborn的联合图来绘制它们 sns jointplot x y 现在我想分别将 x 轴和 y 轴标记为 X
  • 如何缩放图像的一部分并插入到 matplotlib 中的同一图中

    我想缩放数据 图像的一部分并将其绘制在同一个图中 看起来有点像这个图 是否可以在同一图中插入缩放图像的一部分 我认为可以用子图绘制另一个图形 但它绘制了两个不同的图形 我还阅读了添加补丁以插入矩形 圆形 但不确定将图像的一部分插入到图中是否
  • Matplotlib:Gridspec 或 plt.subplot2grid 的 OOP 等效项是什么

    要在可以具有列跨度和行跨度的表中排列子图 Matplotlib 的 Pyplot API 使用 http matplotlib org users gridspec html http matplotlib org users gridsp
  • 缩放插图中不同的 x 和 y 比例,matplotlib

    我正在尝试使用 matplotlib 制作插图 目前我有类似最后一个答案的内容如何缩放图像的一部分并插入到 matplotlib 中的同一图中 https stackoverflow com questions 13583153 how t
  • 绘制到图像对象

    我可以保存一个图imshow 因为它返回一个图像对象 如下所示 image plt imshow list interpolation None 后来我想创建其中许多图像的动画 将其保存在列表中并将其渲染为视频 如果这种方法很愚蠢 请告诉我
  • matplotlibplot_曲面图

    matplotlib 教程提供了如何绘制球面的一个很好的示例 from mpl toolkits mplot3d import Axes3D import matplotlib pyplot as plt import numpy as n

随机推荐

  • 在mapview中绘制透明的圆

    我的地图视图和叠加有问题 每次改变 GPS 位置时 我都必须在地图上画一个圆圈 我在覆盖类中使用了扩展覆盖的方法绘制 问题是我必须以透明度绘制这些圆圈 但是当圆圈在交点处相互重叠时 颜色会有所不同 因为存在 alpha 之和 我该如何修复它
  • 多线程Hello World

    使用两个线程 您应该打印 Hello World Hello World Hello World Hello World Hello World Hello World 在两个线程中 一个应该打印 Hello 另一个线程应该打印 World
  • 将本地时间转换为 UTC 时,如何使 Time::Piece 尊重 DST?

    我想将时间戳从当地时间转换为 GMT 我有遗留代码 手动 执行此操作Time Local timelocal and gmtime 它有效 但我不喜欢它并想使用Time Piece反而 我用了这个答案 https stackoverflow
  • pyinstaller 没有名为 pyinstaller 的模块

    我的 mac osx sierra 下安装了 2 个 python 版本 蟒蛇3 5 蟒蛇2 7 我使用以下命令在 python3 5 下安装了 pyinstaller python3 5 m pip install pyinstaller
  • 设置 CSS 列中第一项的样式

    我有一个显示在多列上的列表 每个列表项都是块元素 display block 并附加了一些样式 底部有 1px 边框 目前看起来是这样的 List item List item List item List item List item L
  • 如何以编程方式确定蓝牙主/从角色?

    因此 在蓝牙微微网中 有一个主设备和最多七个从设备 主设备设置从设备同步的时钟和跳频 但有没有办法确定哪个设备是主设备 哪个设备是从设备呢 我主要对便携式设备 Android iPhone 感兴趣 但乞丐不能是选择者 如果有人有这个领域的信
  • 将 cmd 错误捕获到当前目录中的文件中?

    我有一个 PowerShell 脚本 可以重新启动文件中列出的服务器 foreach server in servers try cmd c shutdown exe r f m server t 0 d p 0 0 c PlannedRe
  • 模糊屏幕截图中的矩形

    我正在开发一个使用背景的 Android 应用程序Service以编程方式捕获当前屏幕上的任何内容的屏幕截图 我获得的屏幕截图是Bitmap 接下来我成功导入了OpenCV https docs opencv org 2 4 doc tut
  • 如何为 Laravel Fortify + Inertia + vue 添加角色和权限?

    我的项目使用 laravel fortify 惯性与 vue 我必须添加基于角色的权限 就像 spatie 权限包一样 我对于强化和惯性还是一个初学者 但我有 spatie 包的经验 我对如何添加角色和权限进行强化感到困惑 目前我计划创建像
  • 在 WordPress(或 .htaccess)中创建 URL 别名

    我有一个在 Wordpress 上运行的网站 我想创建一个自定义短网址 如果页面 URL 是 www mysite com category post 我希望用户能够访问 www mysite com alias 如果有一种 Wordpre
  • 函数什么时候太长? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在主可执行文件的子文件夹中部署 Qt C++ 共享库的 dll?

    我有一个由我创建的 Qt5 C 项目 其中包含一个主应用程序和一个共享库 它编译并执行 我能够部署它 问题是 通过部署 我需要将共享库的已编译 dll 放在与主可执行文件相同的目录中 但是 我更喜欢保持顶层文件夹相对干净 并将必要的文件放在
  • 模块“AppModule”声明了意外值“AnyComponent”

    我正在使用 Angular2 当尝试在同一个 Typescript 文件中使用两个类时 我遇到了这个问题 在编译时不会给我任何错误 但是当我尝试执行该页面时 console log 会给出以下错误 Error BaseException h
  • PostgreSQL:块中的页眉无效

    我收到错误 ERROR invalid page header in block 411 of relation t value time 在我的 PostgreSQL 数据库中 这种情况在不同的机器上不断发生 有没有办法防止这种情况发生
  • 由于 ORDER BY 子句导致 SQL 查询性能不佳

    我有一个查询连接 4 个表 其中 WHERE 子句中有很多条件 该查询还包括数字列上的 ORDER BY 子句 返回需要 6 秒 这太长了 我需要加快速度 令人惊讶的是 我发现如果删除 ORDER BY 子句 则需要 2 秒 为什么 ord
  • CakePHP 2 找不到插件

    在 CakePHP 2 中我使用 一川 https github com ichikaway cakephp mongodb tree cake2 0的 MongoDB 插件是这样的 public default array datasou
  • 编译 imagemagick Convert util 的静态版本

    寻找为创建静态二进制文件图像魔法 http www imagemagick org 两个平台上的转换实用程序 ubuntu 和 os x 我能找到的唯一讨论如何做到这一点的讨论是 并且已经过时了 我尝试从下载 tar 文件http www
  • SQL Server 中的数据沿袭

    客观的 让我们想象一下一个大型企业 其中我们拥有异构数据存储 例如 SQL 服务器 No SQL 存储 ADL ADF 等大数据存储 分布在不同的业务组中 我们的目标是在企业级别构建沿袭服务 这将提供有关企业内不同数据存储实例之间的数据沿袭
  • 从命令行运行 .php 文件中的 shell 命令

    我想将一系列 shell 命令放入程序中并从命令行执行该程序 我决定使用 PHP 来实现此目的 因此目前我正在尝试运行最基本的 shell 命令 另存为 build php 从命令行 php build php Output php exe
  • 如何在 matplotlib 中生成链接轴

    我正在尝试创建一个带有链接 x 轴 st 的图 顶部和底部刻度 标签是单位测量 焦耳和千焦耳 我看过 sharex 等的例子 但我的需求如下 如何使轴链接到从第一个轴生成第二个刻度线 标签的位置 当改变一个轴的限制时 另一轴应自动更新 最简