使用 twinx 时定义宽高比

2023-12-08

如何设置使用的绘图的纵横比twinx?


下面我举三个例子:

  1. without twinx突出显示我如何设置宽高比
  2. 仅与twinx说明如何重置先前定义的宽高比
  3. 我尝试定义两者的长宽比y使用时的轴twinx(这不起作用)

我正在使用 matplotlib 1.3.0
以下脚本说明了如何设置简单绘图的纵横比:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,1.6,50) + 50.0

fig = plt.figure()

ax = fig.add_subplot(111)

XLIM = [50.0, 51.6]
YLIM = [0.0, 1.1, 0.0, 11.0] 

ax.plot(x,np.sin(x-50.0),'b')

ax.set_xlim([XLIM[0], XLIM[1]])
ax.set_ylim([YLIM[0], YLIM[1]])

ax.set_xticks(np.arange(XLIM[0], XLIM[1], 0.2))
ax.set_yticks(np.arange(YLIM[0], YLIM[1]+0.1, 0.1)[:-1])

ax.grid(True,which='major',linestyle='solid')

ax.set_aspect((XLIM[1]-XLIM[0])/(YLIM[1]-YLIM[0]))

plt.show()

生成的图形具有定义的纵横比:

first plot

但是,如果我想添加一个额外的y- 轴使用twinx()函数,宽高比被重置:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,1.6,50) + 50.0

fig = plt.figure()

ax = fig.add_subplot(111)
ax2 = ax.twinx()

XLIM = [50.0, 51.6]
YLIM = [0.0, 1.1, 0.0, 11.0] 

ax.plot(x,np.sin(x-50.0),'b')

ax.set_xlim([XLIM[0], XLIM[1]])
ax.set_ylim([YLIM[0], YLIM[1]])

ax.set_xticks(np.arange(XLIM[0], XLIM[1], 0.2))
ax.set_yticks(np.arange(YLIM[0], YLIM[1]+0.1, 0.1)[:-1])

ax.grid(True,which='major',linestyle='solid')

ax.set_aspect((XLIM[1]-XLIM[0])/(YLIM[1]-YLIM[0]))

plt.show()

得到这个图(其中先前定义的y-重置左侧的限制):

first twinx attempt

现在,尝试再次指定纵横比不会产生预期的结果:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,1.6,50) + 50.0

fig = plt.figure()

ax = fig.add_subplot(111)
ax2 = ax.twinx()

XLIM = [50.0, 51.6]
YLIM = [0.0, 1.1, 0.0, 11.0] 

ax.plot(x,np.sin(x-50.0),'b')
ax2.plot(x,np.cos(x-50.0)*10.,'r')

ax.set_xlim([XLIM[0], XLIM[1]])
ax.set_ylim([YLIM[0], YLIM[1]])
ax2.set_ylim([YLIM[2], YLIM[3]])

ax.set_xticks(np.arange(XLIM[0], XLIM[1], 0.2))
ax.set_yticks(np.arange(YLIM[0], YLIM[1]+0.1, 0.1)[:-1])
ax2.set_yticks(np.arange(YLIM[2], YLIM[3]+1.0, 1.0))

ax.grid(True,which='major',linestyle='solid')

ax.set_aspect((XLIM[1]-XLIM[0])/(YLIM[1]-YLIM[0]))
ax2.set_aspect((XLIM[1]-XLIM[0])/(YLIM[3]-YLIM[2]))

plt.show()

这会产生:

attempt to fix the aspect ratio

为了生成像第一个这样的情节,但有两个情节,我缺少什么y- 不同尺度的轴?使用时如何定义纵横比twinx?


看看adjustable轴的参数。这控制当宽高比/限制改变时数据限制或边界矩形的形状是否改变。

通常,选项是"box" and "datalim",但共享轴有一种特殊情况。就你而言,你想要adjustable='box-forced'.

作为一个简单的例子(我冒昧地稍微简化了一些事情,请随意使用单独的set_foo方法(如果您更清楚的话)。如果你走那条路,方法是ax.set_adjustable.):

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,1.6,50) + 50.0

fig, ax = plt.subplots()
ax2 = ax.twinx()

XLIM = [50.0, 51.6]
YLIM = [0.0, 1.1, 0.0, 11.0]

ax.plot(x,np.sin(x-50.0),'b')
ax2.plot(x,np.cos(x-50.0)*10.,'r')

ax.set(adjustable='box-forced',
       xlim=XLIM, ylim=YLIM[:2],
       xticks=np.arange(XLIM[0], XLIM[1], 0.2),
       yticks=np.arange(YLIM[0], YLIM[1]+0.1, 0.1)[:-1],
       aspect=(XLIM[1]-XLIM[0])/(YLIM[1]-YLIM[0]))

ax2.set(adjustable='box-forced',
        ylim=YLIM[2:],
        yticks=np.arange(YLIM[2], YLIM[3]+1.0, 1.0),
        aspect=(XLIM[1]-XLIM[0])/(YLIM[3]-YLIM[2]))

ax.grid(True, which='major',linestyle='solid')

plt.show()

enter image description here

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

使用 twinx 时定义宽高比 的相关文章

  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • ipython/ pylab/ matplotlib安装和初始化错误

    我在 OS X El Captain 上安装了 matplotlib anaconda ipython 然而 即使在尝试以所有可能的方式设置环境变量之后 我仍无法启动 ipython shell pylab 版本 这是错误 ImportEr
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • com.mysql.jdbc.driver类未找到异常

    我得到了帮助this博客文章 但我得到 com mysql jdbc driver 类未找到异常 该博客文章的不同之处在于 在我的例子中 他们尝试连接到 mysql 而不是 MS SQL 到目前为止 这是我的代码 包com example
  • Arduino 安卓 USB 连接

    我正在使用 Arduino杜米拉诺夫 and Nexus 7 我已成功检测到 Arduino 板并显示供应商 ID 和产品 ID 我正在尝试将数据从平板电脑传输到 Arduino 板并尝试闪烁LED在黑板上 Android 的代码如下 主要
  • UIWebView 只有一个应该适合整个视图的图像

    所以我现在遇到的问题是 UIWebViews 显示单个图像 我想要的是 如果图像不适合该位置 则缩小图像 如果不适合 则保持其原始大小 所以这是我的做法 在 UIViewController 中 void viewDidLoad super
  • std::bind 是否丢弃 C++11 中参数的类型信息?

    问题发生的情况 请考虑以下 C 代码 include
  • 如何在 Fortran 中创建函数?

    我确信这个问题的解决方案是非常基本的 但我很难弄清楚如何在 Fortran 中使用函数 我有以下简单的程序 PROGRAM main IMPLICIT NONE INTEGER a b a 3 b 5 PRINT funct a b END
  • 关于java实习生

    我的问题是实习生是否正在使用字符串并且字符串具有 SPC 字符串池常量 实习生概念也适用于整数 那么是否有整数池常量 如果没有那么它是如何工作的 class InternExample public void print Integer i
  • 如何使用 webdriver 操作用户选择的文本?

    假设我的网页中有以下代码片段 p 这是一些文字 p 我希望 WebDriver 在该文本中选择 某些 就像用户选择它一样 我应该怎么做 我知道如何获得 p 元素 WebElement editable getDriver findEleme
  • 如何验证两个组件的值是否相同?日本科学基金会

    正如我们在 Asp Net 中有 CompareValidator 那么在 JSF 中我们有什么来验证两个字段的值是否相同 我想验证密码和确认密码字段 不 基本 JSF 实现中不存在这样的验证器 您基本上需要在last组的组成部分并抓住ot
  • 如何在绘图中向散点图添加固定的水平线和垂直线

    我有以下生成散点图的代码 我想添加代表 y 轴和 x 轴平均值的垂直线和水平线 我该怎么做 f lt list family Courier New monospace size 18 color 7f7f7f x lt list titl
  • JavaScript 刷新页面

    我有一个带有弹出按钮的 html 页面 如果我单击此按钮 则会弹出一个新窗口 我会在此窗口中进行所有更改 然后单击关闭按钮 关闭弹出窗口后 带有弹出按钮的 html 页面应该刷新 这可能吗 yes reload opener window
  • C# 中的方法签名

    下面的方法签名是什么 int DoSomething int a int b 返回类型是否是签名的一部分 返回类型不是 C 中方法签名的一部分 仅方法名称及其参数types 但不是参数names 是签名的一部分 例如 您不能使用以下两种方法
  • 如何使用反射检测字段上的“新”修饰符?

    http msdn microsoft com en us library 435f1dw2 aspx public class Base public string Field public class Child Base public
  • 使用定义的输入过程从 Fortran 中的二进制文件读取错误值

    我正在尝试编写一个简单的代码 它采用一些具有相同父抽象类的对象 将它们存储到二进制文件中并将它们读回 我的代码如下所示 module m implicit none type container class a allocatable it
  • R:从列表对象创建自定义输出

    我有一个存储不同数据类型和对象的列表 header lt This is a header a lt 10 b lt 20 c lt 30 w lt 1 10 x lt 21 30 y lt 51 60 z lt 0 9 mylist lt
  • 有没有办法检查函数输出是否分配给Python中的变量?

    在Python中 我想编写一个函数 如果它自己调用的话 它会将其结果漂亮地打印到控制台 主要用于交互使用或调试 出于这个问题的目的 假设它检查某事物的状态 如果我打电话 check status 我想看到类似的东西 Pretty print
  • nVarchar 和 SqlParameter

    我正在开发一个必须支持多种语言的应用程序 为了解决特殊字符问题 我在文本字段中使用 NVarhcar 所以我对文本字段的 SQL 查询是 insert into tbl text text values N Chci tan it v ob
  • Hmisc Latex功能需要去掉第一行

    我在 rmarkdown 文件中使用 Hmisc 当我创建一个表时 这就是我所做的 output pdf document r Arrests Stats results asis message FALSE warning FALSE e
  • Spring OAuth2 禁用 TokenEndpoint 的 HTTP 基本身份验证

    我从 Spring OAuth2 开始 到目前为止一切顺利 我已经通过配置保护了我的应用程序 但我有一个问题 我的客户端不支持 HTTP 基本授权 有没有办法禁用 oauth token 端点的 HTTP 基本身份验证 我想在 JSON 正
  • 修剪字符串开头和结尾的空格

    我正在尝试找到一种方法来修剪标题字符串开头和结尾的空格 我正在使用这个 但它似乎不起作用 title title replace s s g 有任何想法吗 注 截至 2015 年 所有主流浏览器 包括IE gt 9 都支持String pr
  • 使用 twinx 时定义宽高比

    如何设置使用的绘图的纵横比twinx 下面我举三个例子 without twinx突出显示我如何设置宽高比 仅与twinx说明如何重置先前定义的宽高比 我尝试定义两者的长宽比y使用时的轴twinx 这不起作用 我正在使用 matplotli