Matplotlib:添加双 y 轴而不在图中使用其值

2023-12-24

这是为了澄清问题标题。假设您有四个整数列表,您想用它们生成散点图:

a=[3,7,2,8,12,17]
b=[9,4,11,7,6,3]
c=[9,3,17,13,10,5]
d=[5,1,1,14,5,8]

为了简单起见,你还有一个函数f(x)=1/x,这适用于所有列表,因此:

from __future__ import division
a1=[1/i for i in a]
b1=[1/i for i in b]
c1=[1/i for i in c]
d1=[1/i for i in d]

我的问题:如何添加第二个 y 轴,已知函数返回的值范围为0.06 to 1.0, 不使用散点图中的任何 a1、b1、c1、d1 列表?

我的意思是:如果您以传统方式生成以下散点图,那么如何根据 a1、b1、c1、d1 的值添加第二个 y 轴,而无需在绘图本身中使用它们的任何系列?

import matplotlib.pyplot as plt
plt.scatter(a,b,c='red',label='reds')
plt.scatter(c,d,c='blue',label='blues')
plt.legend(loc='best')

This is the scatter without the second y axis: enter image description here

And this is a made up version of the same one, including the second y axis discussed so far: enter image description here

NB:这个问题不同于this https://stackoverflow.com/questions/7733693/matplotlib-overlay-plots-with-different-scales,因为我不想用不同的比例来绘制。我只想添加具有相关值的第二个轴。


要确保新轴上的数字位于其倒数的相应位置:

import matplotlib.pylab as plt

a=[3,7,2,8,12,17]
b=[9,4,11,7,6,3]
c=[9,3,17,13,10,5]
d=[5,1,1,14,5,8]

fig = plt.figure()
ax = fig.add_subplot(111)

ax.scatter(a,b,c='red',label='reds')
ax.scatter(c,d,c='blue',label='blues')
ax.legend(loc='best')
ax.set_ylabel('Y')
# make shared y axis
axi = ax.twinx()
# set limits for shared axis
axi.set_ylim(ax.get_ylim())
# set ticks for shared axis
inverse_ticks = []
label_format = '%.3f'
for tick in ax.get_yticks():
    if tick != 0:
        tick = 1/tick
    inverse_ticks.append(label_format % (tick,))
axi.set_yticklabels(inverse_ticks)
axi.set_ylabel('1/Y')
fig.tight_layout()
fig.show()

你也可以这样做X axis:

# make shared x axis
xaxi = ax.twiny()
# set limits for shared axis
xaxi.set_xlim(ax.get_xlim())
# set ticks for shared axis
inverse_ticks = []
label_format = '%.3f'
for tick in ax.get_xticks():
    if tick != 0:
        tick = 1/tick
    inverse_ticks.append(label_format % (tick,))
xaxi.set_xticklabels(inverse_ticks)
xaxi.set_xlabel('1/X')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib:添加双 y 轴而不在图中使用其值 的相关文章

随机推荐

  • 如何克隆 MemoryStream 对象?

    我有一个MemoryStream经过的对象Stream类型参数 Stream是 C 中的抽象类 我想克隆它以创建另一个单独的MemoryStream对象与原始对象的当前位置并创建一个新的XMLReader出来 所以我将能够阅读其内容 这就是
  • 取消引用 void 指针时的reinterpret_cast 行为

    在与某人争论他在评论中提出的建议时这个答案 https stackoverflow com a 21177728 241631 我遇到了一些 gcc4 8 和 VS2013 拒绝编译的代码 但 clang 很高兴地接受它并显示正确的结果 i
  • 如何强制 GHC 内联 FFI 调用?

    我制作了小型 C 模块来提高性能 但 GHC 不内联外部函数 并且调用成本消除了加速 例如 test h int inc int x test c include test h int inc int x return x 1 Test h
  • Haskell 树木地图

    我的树定义为 data Tree a Leaf a Node Tree a Tree a deriving Show 我还声明了一个测试树 myTree Node Node Leaf 1 Leaf 2 Leaf 3 我想要做的是创建一个函数
  • 接连显示 UIMenuController 的问题

    我正在使用 UIMenuController 的新自定义功能将 复制 以外的内容添加到菜单中 以便剪切并粘贴到 Web 视图中 我所做的就是获取对共享 UIMenuController 的引用 将 UIMenuItems 的 NSArray
  • 确定从 spacy 中提取的文本是否是一个完整的句子

    我们正在研究从 PDF 中提取的句子 问题是它包括标题 页脚 目录等 有没有办法确定我们将文档传递给spacy时得到的句子是否是一个完整的句子 有没有办法过滤句子的某些部分 例如标题 一个完整的句子至少包含一个主语 一个谓语 一个宾语 并以
  • 如何使用 Dagger 2 在 Activity 或 Fragment 范围内交换测试双精度?

    编辑 小心 我已经删除了这个问题中提到的旧存储库 请参阅我自己对问题的回答以获取可能的解决方案 并随时改进它 我指的是我的帖子here https stackoverflow com questions 40405839 dagger 2
  • 如何将文件夹上传到 Google Colab?

    我想运行一个使用目录中定义的许多头文件的笔记本 所以基本上我想将整个目录上传到 Google Colab 以便我可以运行笔记本 但我无法找到任何此类选项 只能上传文件而不是完整的文件夹 那么有人可以告诉我如何将整个目录上传到 google
  • 如何阻止 Maven 重命名已安装的 jar

    我正在使用 mvn install install 命令将我们的内部文件安装到 Maven 存储库 以这种方式安装的所有 Jars 都会自动添加版本名称作为后缀 由于我们有许多带有 Jars 名称的批处理脚本 这对我们来说非常不方便 如何关
  • Backbone 和 TypeScript,一段不幸的婚姻:构建类型安全的“get”?

    我正在尝试将 TypeScript 与 Backbone js 一起使用 它 有效 但是 Backbone 的 get 和 set 失去了大部分类型安全性 我正在尝试编写一个可以恢复类型安全的辅助方法 像这样的事情 我会将其放入我的模型中
  • Alsa全双工通信

    我想使用alsa实现全双工通信 我首先编写了捕获和回放程序 并使用 UDP 通信将数据从捕获的进程传输到回放进程 当我运行两个进程时工作正常 其中一个正在捕获 另一个正在播放 将其视为从 A 到 B 的半双工 当我尝试实现另一个半双工 从
  • TortoiseSVN:移动文件不保留历史记录

    我试图将文件移动到 TortoiseSVN 存储库内的另一个文件夹 但修订历史记录未保留 我尝试使用 Repo 浏览器移动文件 右键单击拖动文件并选择 将项目移动到此处 以及工作文件夹中的文件 右键单击拖动 选择 SVN 将版本化文件移动到
  • 我可以在 .net 3.5 中调用 .net 2.0 dll 吗?

    我正在迁移到 net 3 5 我想知道我是否可以从 3 5 应用程序调用旧的 net 2 0 dll 的方法 一些外部 API 位于 net 2 0 dll 中 所以我需要那些 请告诉我 谢谢 是的 你可以这么做
  • LaTeX 矩阵在 Github Markdown 上无法正确渲染

    我试图表示一个基本向量 以下代码适用于 Visual Studio Code 我正在使用以下行 begin bmatrix X Y end bmatrix 所有空格均已删除 它应该看起来像这样 https i stack imgur com
  • RabbitMQ 在 CreateModel() 方法上关闭了连接

    我正在尝试运行教程中的 Producer 示例 但 RabbitMQ 关闭了连接 但出现异常 抛出异常 RabbitMQ Client dll 中的 RabbitMQ Client Exceptions OperationInterrupt
  • 直方图 - 以并行方式进行

    Id M1 trx 1 M1 11 35 2 M1 3 4 3 M1 10 45 2 M1 3 95 3 M1 20 95 2 M2 25 55 1 M2 9 95 2 M2 11 95 1 M2 9 65 1 M2 14 54 通过上面的
  • 在正则表达式的字符之间插入空格

    我对正则表达式非常陌生 我试图在字符串中查找存在由字母组成的单词的实例w or e后面跟2位数字 例如e77 w10 etc 这是我目前拥有的正则表达式 我认为它发现了 如果我错了 请纠正我 e w d 0 2 d 1 2 如何在字母后面添
  • Haskell 中的 Comonad 类型类是什么?

    Haskell 中的 Comonad 类型类是什么 正如 Comonad 中的comonad 包中的 Control Comonad http hackage haskell org packages archive comonad 1 1
  • 在react中上传图像不返回表单数据值

    我想获取上传图像的表单数据值 import React from react import styles css import Upload Button Form from antd export default function App
  • Matplotlib:添加双 y 轴而不在图中使用其值

    这是为了澄清问题标题 假设您有四个整数列表 您想用它们生成散点图 a 3 7 2 8 12 17 b 9 4 11 7 6 3 c 9 3 17 13 10 5 d 5 1 1 14 5 8 为了简单起见 你还有一个函数f x 1 x 这适