首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >动态变化y极限

动态变化y极限
EN

Stack Overflow用户
提问于 2015-07-09 07:48:37
回答 1查看 2.8K关注 0票数 4

以下是代码:

代码语言:javascript
运行
AI代码解释
复制
#!/usr/bin/python
import numpy as np
import matplotlib.pyplot  as plt
from   matplotlib.widgets import Slider
########################################
t = np.arange(0.0, 1.0, 0.001)
a0 = 5
f0 = 3
s = a0*np.sin(2*np.pi*f0*t)
########################################
plt.close('all')
fig, ax = plt.subplots(nrows=2, ncols=1)
plt.subplots_adjust(bottom=0.30)
########################################
line0, = ax[0].plot(t,s, lw=2, color='red',   label="red")
# IS THIS LINE NECESSARY
line1, = ax[1].plot(t,s, lw=2, color='green', label="green")
########################################
ax[0].set_xlim([0, 1])
ax[0].set_ylim([-10, 10])
########################################
axcolor = 'lightgoldenrodyellow'
left   = 0.25
bottom = 0.20
width  = 0.65
# DIFFERENT SCALE
# height = fig.get_size_inches()[1] * 0.1
height = 0.03
vgap   = 0.02
print "fig height %s" % fig.get_size_inches()[1]

f1  = plt.axes([left, bottom-0*(height+vgap), width, height], axisbg=axcolor)
a1  = plt.axes([left, bottom-1*(height+vgap), width, height], axisbg=axcolor)

sf1 = Slider(f1, 'Freq1', 0.1, 30.0, valinit=f0)
sa1 = Slider(a1, 'Amp1',  0.1, 10.0, valinit=a0)
########################################
def update1(val):
    amp  = sa1.val
    freq = sf1.val

    line0.set_ydata(amp*np.sin(2*np.pi*freq*t))
    line1.set_ydata(2*amp*np.sin(2*np.pi*freq*t))

sf1.on_changed(update1)
sa1.on_changed(update1)

plt.show()

当使用滑块改变第1点上的波幅/频率时,也会改变第2图上的波幅/频率(使第2图上的振幅加倍)。问题是,当第一幅图的幅值超过3时,它根本不适合第二幅图。因为它的y范围从-6到6。

三个问题:

  1. -6和6号码是从哪里来的?我没有设置它们。
  2. 在第二幅图上,y极限是如何动态变化的?我可以使用例如ax[1].set_ylim([-20, 20])来设置它,但是我想要一些更一般的东西。让我们假设第二幅图的y值可以超过20 (这可能是一些复杂计算的结果,在绘图过程中不为人所知)。当第一幅幅值较小时,第二幅图的y应缩小,振幅较大时,y应扩展。
  3. 在我改变第一幅图的幅度/频率之前,我能让第二幅图空着吗?换句话说,如果不首先使用下面的行创建第二块图,这也可以(请展示这两种情况,一种是当第二块地块已经存在,另一种情况不是)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 09:20:32

编辑:用户击打对最初的答案在评论中提供了一些有用的改进--我采用了这些方法,并且通常使答案更深、更通用。

我会一个接一个地回答问题

  1. 6和-6是从哪里来的?

这是matplotlib的最佳猜测,基于最初绘制在轴上的数据。如果不指定任何值,它将尽可能地满足轴的限制。

对于那些有着更深层次兴趣的人,matplotlib默认在没有指定标度的情况下自动缩放轴,而这些代码行实际上应用了自动缩放。

  1. 在第二幅图上,y极限是如何动态变化的?我

你快到了。在update1()中,添加ax[1].autoscale_view(),在添加新数据时,必须先加上 ax[1].relim()。这将使matplotlib自动缩放轴,以适应您在其上绘制的任何数据的值,这是一个通用的解决方案。如果您需要‘手动’但动态控制自己的斧头,请参阅我最初的建议如下。

N.B.在最初的版本中,我建议只编写ax[1].set_ylim(-2.2*amp,2.2*amp)或类似的东西,其中2.2是一个任意因素:由滑块设置的正弦波振幅的限制加上一点( 0.2)。

  1. 在我改变第一幅图的振幅/频率之前,我能把第二幅图空着吗?

是。一种方法是替换

代码语言:javascript
运行
AI代码解释
复制
line1, = ax[1].plot(t,s, lw=2, color='green', label="green")

使用

代码语言:javascript
运行
AI代码解释
复制
line1, = ax[1].plot([],[], lw=2, color='green', label="green")

这将在您可以更新的轴上创建一个行对象,但该对象最初没有数据。注:我最初建议使用0,0而不是[],[],但这将在0,0绘制一个点,这可能不符合您的目的。

然后在update1()

代码语言:javascript
运行
AI代码解释
复制
line1.set_xdata(t)

update1()函数的最终代码

代码语言:javascript
运行
AI代码解释
复制
def update1(val):
    amp  = sa1.val
    freq = sf1.val

    line0.set_ydata(amp*np.sin(2*np.pi*freq*t))
    line1.set_xdata(t)
    line1.set_ydata(2*amp*np.sin(2*np.pi*freq*t))
    ax[1].relim()
    ax[1].autoscale_view()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31322394

复制
相关文章
修改lua的文件加载器,自定义lua文件加载
require使用的路径和普通我们看到的路径还有些区别,我们一般见到的路径都是一个目录列表。require的路径是一个模式列表,每一个模式指明一种由虚文件名(require的参数)转成实文件名的方法。更明确地说,每一个模式是一个包含可选的问号的文件名。匹配的时候Lua会首先将问号用虚文件名替换,然后看是否有这样的文件存在。如果不存在继续用同样的方法用第二个模式匹配。例如,路径如下:
帘卷西风
2018/08/03
2.3K0
用python加载3ds max场景设置
print '######---load max file---#######' maxFilePath='d:/nono/scene/max2016.max' fm = MaxPlus.FileManager fm.Open(maxFilePath) print '######---render setting---#######' render = MaxPlus.RenderSettings outputjpg=r"c:\testRender.jpg" print outputjpg render
py3study
2020/01/07
1.5K0
定义多场景的表单
以上表单中,add方法就是添加文章的业务逻辑,edit方法是编辑文章咯,可是两个业务要验证的用户端输入参数都包含了title和content,所以要通过scenarios方法来声明两个场景要校验的属性名称
botkenni
2019/09/02
4680
openresty源码剖析——lua代码的加载
##Openresty是什么 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,通过把lua嵌入到Nginx中,使得我们可以用轻巧的lua语言进行nginx的相关开发,处理高并发,扩展性极高的动态 Web 应用。 大家知道lua_code_cache 开关用于控制是否缓存*_by_lua_file对应的文件里的lua代码 lua_code_cache off的情况下,跟请求有关的阶段,在每次有请求来的时候,都会重新加载最新的lua文件,这样我们修改完代码之后就不用通过reload
magicsoar
2018/02/06
3K0
Lua模块的加载与内存释放
今天早上听说一件事情让我觉得很诡异的事情:公司线上的一款游戏,加载一份配置资源后,内存涨了几十M,然后内存再也下不来了。因为好奇,所以要来了最大的一个配置文件(4.5M,去除空格与换行后的大小),进行测试。最终发现,内存其实是可以被释放的,不过需要注意以下的规则。
meteoric
2018/11/20
3K0
动态表单之表单组件的插件式加载方案
本文首发于政采云前端团队博客:动态表单之表单组件的插件式加载方案 https://www.zoo.team/article/dynamic-form-loading-method
政采云前端团队
2021/02/24
2.5K0
lua中设置只读table
C++里有const用来定义常量,保护参数或函数意外地修改,提高程序的健壮性。在lua里虽然没有没有类似的关键字,我们可以用表来模拟实现其只读的功能,来保护我们的数据被意义地修改。
王亚昌
2018/08/03
2.9K0
lua + OpenResty + Canal 场景应用开发
而对于首页这种,高访问,且 页面数据并不是,经常的变化! 为了减轻服务器的压力,直接将其制作成一个 静态的页面进行展示!
Java_慈祥
2024/08/06
1460
lua + OpenResty + Canal 场景应用开发
Lua设置函数环境—setfenv
(1)当第一个参数为一个函数时,表示设置该函数的环境 (2)当第一个参数为一个数字时,为1代表当前函数,2代表调用自己的函数,3代表调用自己的函数的函数,以此类推
bering
2020/02/14
4.9K0
【表单系统】复杂场景下的表单解决方案
表单在我们的日常工作中经常会用到,一个优质的表单可以提高我们的工作效率,完成一些更多的业务,提高产品体验,在实际应用中,根据不同场景表单、表格、图表,其中表单涉及到联动、校验、布局等复杂场景,经常是开发者的需要耗费精力去解决的点。本文作为《OneCode表单系统》介绍的续篇,将着重介绍OneCode在复杂场景下的表单解决方案。
onecode
2023/10/22
1.3K0
【表单系统】复杂场景下的表单解决方案
设置linux账号的有效时间
在linux系统中,默认创建的用户的有效期限都是永久的,但有时候,我们需要对某些用户的有效期限做个限定! 比如:公司给客户开的ftp账号,用于客户下载新闻稿件的。这个账号是有时间限制的,因为是付费的。合同到期了,这个账号就要求停用。 废话不多说,直接说下操作记录: 需求: 创建lzwb账号,用于下载/home/hqsb里面的新闻稿件,这个账号的合同到期时间是2018年10月26号 1)创建账号lzwb [root@dev ~]# useradd lzwb -d /home/hqsb -s /sbin/nol
洗尽了浮华
2018/01/23
4.6K0
我的HTML总结之表单
表单是Web中实现交互的重要方法,用于收集用户信息并提交给服务器。 表单中的9大控件 <input type="text" name="key" value="123" readonly="reado
柴小智
2018/04/10
1.3K0
我的HTML总结之表单
你的电子合同,有效吗?
科技的发展,我们越来越多的接触电子合同,比如金融借贷合同、员工劳务合同等。当我们拿到一个电子合同的时候,怎么判断这个合同是否真实有效呢?
程序猿讲故事
2022/04/29
7.1K0
你的电子合同,有效吗?
Vue KeepAlive表单页缓存场景
KeepAlive 推荐使用include和 exclude 添加和移除缓存组件,需要Vuex的配合,我们项目比较小,没有需求大量使用Vuex,集成过于冗余。
星宇大前端
2020/07/13
1.2K0
不用写代码也能做表单 —— 加载meta即可 菜单表单加载json运行效果。ModelAbout
我这么懒,怎么会写这么多代码? 我想做到:即使一百个表单也只需要一套代码(而且不需要复制粘贴)。实现多个表单,只需要加载不同的meta即可。
用户1174620
2020/09/15
6780
我的场景驱动设计
我结合领域驱动设计、事件风暴、DCI模式等方法提出的通过领域场景来驱动设计的一种简明设计方法。
张逸
2019/08/26
1.1K0
我的场景驱动设计
erlang代码加载路径的设置
1,启动erlang shell,输入命令init:get_argument(home).
用户4766018
2022/08/19
7480
语义分块真的有效吗?
最近看到一篇有意思的论文《Is Semantic Chunking Worth the Computational Cost?[1]》,论文探讨了在检索增强型生成(Retrieval-Augmented Generation, RAG)系统中,语义分块(semantic chunking)与传统固定大小分块(fixed-size chunking)的效率和性能比较。
AgenticAI
2025/03/18
630
语义分块真的有效吗?
Lua Lua Lua!!!
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
云深无际
2022/02/09
3.7K0
Lua Lua Lua!!!
PyQt 加载简单 Qt 设计器表单
在使用 PyQt 开发桌面应用程序时,使用 Qt Designer 可以大大加快 UI 的设计过程。你可以在 Qt Designer 中设计 UI,然后将其加载到 PyQt 中,从而实现分离的 UI 和逻辑代码。
华科云商小徐
2024/10/08
860

相似问题

使用Lua存储游戏数据有效吗?

40

UI场景中的灯光设置附加加载游戏场景的设置

50

如何在设置延迟后加载场景?

20

OpenGL: glPushMatrix,plMultMatrix,plPopMatrix对我场景中的每一个物体都有效吗?

20

加载场景之前加载水平?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档