如何在 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 中生成链接轴 的相关文章

  • Jupyter 笔记本中未显示绘图

    我正在尝试为 Anscombe 数据集创建 2x2 图 加载数据集并分离数据集中的每个类 import seaborn as sns import matplotlib pyplot as plt anscombe sns load dat
  • 无法在我的程序中使用 matplotlib 函数

    我正在 Windows 10 中运行 Anaconda 安装 conda 版本 4 3 8 这是我尝试在 python 命令行中运行的代码 import matplotlib pyplot as plt x 1 2 3 4 y 5 6 7
  • 如何仅注释堆积条形图的一个类别

    我有一个数据框示例 如下所示 data Date 2021 07 18 2021 07 19 2021 07 20 2021 07 21 2021 07 22 2021 07 23 Invalid NaN 1 1 NaN NaN NaN N
  • 使用 Matplotlib 绘制二维数组

    所以我有一个二维数组 名为 Data 如下所示 Shape 0 Shape 1 Shape N Scale 0 Value00 Value01 Value0N Scale 1 Value10 Value11 Value1N Scale N
  • 删除流图(matplotlib)而不清除图形

    到目前为止我总是在这里找到帮助 我长期以来一直在寻找问题的解决方案 现在我可能已经失明了 我希望你能帮助我解决这个问题 我已经构建了一个 python 程序 可以绘制方向场 颤动 或流图 由于图表中可能还有其他数据 例如轨迹 我不能只是清除
  • 在 pandas 条形图中设置 xticks

    我在下面的第三个示例图中遇到了这种不同的行为 为什么我能够正确编辑 x 轴的刻度pandas line and area 情节 但不与bar 修复 一般 第三个示例的最佳方法是什么 import numpy as np import pan
  • 根据第三个变量更改散点图中的标记样式

    我正在处理多列字典 我想绘制两列 然后根据第三列和第四列更改标记的颜色和样式 我很难改变 pylab 散点图中的标记样式 我的方法适用于颜色 不幸的是不适用于标记样式 x 1 2 3 4 5 6 y 1 3 4 5 6 7 m k l l
  • 将 yerr/xerr 绘制为阴影区域而不是误差线

    在 matplotlib 中 如何将误差绘制为阴影区域而不是误差条 例如 而不是 忽略示例图中各点之间的平滑插值 这需要进行一些手动插值 或者只是获得更高分辨率的数据 您可以使用pyplot fill between https matpl
  • 如何使用 matplotlib 在误差条图的尖端显示水平线?

    我可以使用下面的代码生成误差条图 代码生成的图表显示了代表错误的垂直线y 我希望在这些错误的尖端有水平线 误差线 但我不知道该怎么做 import numpy as np import matplotlib pyplot as plt x
  • 如何在 Seaborn 中的热图轴上表达类

    我使用 Seaborn 创建了一个非常简单的热图 显示相似性方阵 这是我使用的一行代码 sns heatmap sim mat linewidths 0 square True robust True sns plt show 这是我得到的
  • Jupyter Notebook:带有小部件的交互式绘图

    我正在尝试生成一个依赖于小部件的交互式绘图 我遇到的问题是 当我使用滑块更改参数时 会在前一个绘图之后完成一个新绘图 而我预计只有一个绘图会根据参数发生变化 Example from ipywidgets import interact i
  • 将自定义误差线添加到 seaborn regplot 和 residplot

    有没有一种方法可以将自定义错误栏添加到seaborn regplot和residplot中 就像使用yerr对matplotlib错误栏所做的那样 例子在这里 如果我只是添加 yrr 参数就会发生错误 import seaborn as s
  • Matplotlib mathtext:刻度标签中的字形错误

    当使用默认值时 我在 matplotlib 2 0 2 中渲染数学时观察到错误mathtext https matplotlib org 1 5 1 users mathtext html mathtext tutorial与LaTeX h
  • 在 Windows 上使用带有对数刻度的 matplotlib 时出现 Unicode 错误

    我正在使用 python 2 6 和 matplotlib 如果我运行 matplotlib 库页面中提供的示例 histogram demo py 它工作正常 我已经大大简化了这个脚本 import numpy as np import
  • import matplotlib.pyplot 给出 AttributeError: 'NoneType' 对象没有属性 'is_interactive'

    我尝试在 Pycharm 控制台中导入 matplotlib pyplt import matplotlib pyplot as plt 然后作为回报我得到 Traceback most recent call last File D Pr
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • Python Matplotlib 箱线图颜色

    我正在尝试使用 Matplotlib 制作两组箱线图 我希望每组箱线图 以及点和晶须 以不同的颜色填充 所以基本上情节上会有两种颜色 我的代码如下 如果您能帮助将这些图绘制成彩色 那就太好了 d0 and d1是每个数据列表的列表 我想要一
  • 如何在 pylab/pyplot 中裁剪极坐标图

    我有一个极坐标图 其中theta从 0 到 pi 2 变化 所以整个情节都在第一季度 如下所示 pylab inline X linspace 0 pi 2 polar X cos 6 X 2 source schurov com http
  • 使用 matplotlib 绘制简单的 3d numpy 数组

    我想绘制三维 ODE 系统的数值方法的结果 我的输出采用以下形式 假设我们已经计算了三个步骤 import numpy as np v np array 1 2 3 4 5 6 7 8 9 其中每个三元组中的第一个值是 x 坐标 第二个是
  • 绘制连接点的线

    我知道还有另一个非常类似的问题 但我无法从中提取我需要的信息 成对绘制线条 https stackoverflow com questions 17698824 plotting lines in pairs 我有4分 x y plane

随机推荐

  • 在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 等的例子 但我的需求如下 如何使轴链接到从第一个轴生成第二个刻度线 标签的位置 当改变一个轴的限制时 另一轴应自动更新 最简