我正在尝试创建具有三个参数变化的多维函数的交互式matplotlib图.问题在于参数可以在很大的范围内变化,因此我宁愿不使用滑块,而直接键入想要的值.基本上,我想重新创建下面的规范示例,在该示例中,我希望使用文本框(而不是滑块)在其中输入参数

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.widgets import Slider, Button, RadioButtons

fig, ax = plt.subplots()

plt.subplots_adjust(bottom=0.35)

t = np.arange(0.0, 1.0, 0.001)

a0 = 5

f0 = 3

s = a0*np.sin(2*np.pi*f0*t)

l, = plt.plot(t,s, lw=2, color='red')

plt.axis([0, 1, -10, 10])

ax.plot(t,t)

axcolor = 'lightgoldenrodyellow'

axamp = plt.axes([0.25, 0.25, 0.65, 0.03], axisbg=axcolor)

axfreq = plt.axes([0.25, 0.2, 0.65, 0.03], axisbg=axcolor)

sfreq = Slider(axfreq, 'Freq', 0.1, 30.0, valinit=f0)

samp = Slider(axamp, 'Amp', 0.1, 10.0, valinit=a0)

def update(val):

amp = samp.val

freq = sfreq.val

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

fig.canvas.draw_idle()

sfreq.on_changed(update)

samp.on_changed(update)

resetax = plt.axes([0.8, 0.025, 0.1, 0.04])

button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975')

def reset(event):

sfreq.reset()

samp.reset()

button.on_clicked(reset)

plt.show()

最佳答案

您可以将GUI面板添加到图形窗口.这是一个使用Qt4Agg后端,并将QDockWidget添加到主图形窗口,然后可以将QWidgets添加到停靠窗口的示例.

import numpy as np

import matplotlib

matplotlib.use("Qt4Agg") # This program works with Qt only

import pylab as pl

fig, ax1 = pl.subplots()

t = np.linspace(0, 10, 200)

line, = ax1.plot(t, np.sin(t))

### control panel ###

from PyQt4 import QtGui

from PyQt4 import QtCore

from PyQt4.QtCore import Qt

def update():

freq = float(textbox.text())

y = np.sin(2*np.pi*freq*t)

line.set_data(t, y)

fig.canvas.draw_idle()

root = fig.canvas.manager.window

panel = QtGui.QWidget()

hbox = QtGui.QHBoxLayout(panel)

textbox = QtGui.QLineEdit(parent = panel)

textbox.textChanged.connect(update)

hbox.addWidget(textbox)

panel.setLayout(hbox)

dock = QtGui.QDockWidget("control", root)

root.addDockWidget(Qt.BottomDockWidgetArea, dock)

dock.setWidget(panel)

######################

pl.show()

这是屏幕:

qpython怎么用matplotlib_python-通过文本框的交互式matplotlib图相关推荐

  1. 6、Java Swing JTextField:单行文本框组件

    Swing 中使用 JTextField 类实现一个单行文本框,它允许用户输入单行的文本信息. JTextField类的常用构造方法如下: JTextField()----创建一个默认的文本框. JT ...

  2. 使用vue制作富文本框

    这里分享一个富文本框插件,如图 使用方法: 1-安装 npm install --save vue2-editor或者yarn add vue2-editor 2- 使用 // Basic Use - ...

  3. vscode 不展示文档注释内容_文本框这样用,实现文档不同板块内容高效联动,你还不知道吧...

    --word2016系列教程之"文本框链接使用" 我们使用word文档进行手抄报排版或其他文档排版时,可能会出现一个板块的内容比较多,排不下去.需要在其它板块进行排列,像这样--, ...

  4. html在文本框选中后在表格中选中,excel表格出现文本框的解决方法步骤

    在Excel中如果出现了很多文本框而不是自己需要的,那这些文本框可以删除的.下面是学习啦小编带来的关于excel表格出现文本框的解决方法,希望阅读过后对你有所启发! excel表格出现文本框的解决方法 ...

  5. JTextField:单行文本框组件

    Swing 中使用 JTextField 类实现一个单行文本框,它允许用户输入单行的文本信息.该类的常用构造方法如下. JTextField():创建一个默认的文本框. JTextField(Stri ...

  6. android编辑框边框设计,Android设计规范 Material Design-Components(17文本框)

    文本框 文本框可以让用户输入文本.它们可以是单行的,带或不带滚动条,也可以是多行的,并且带有一个图标.点击文本框后显示光标,并自动显示键盘.除了输入,文本框可以进行其他任务操作,如文本选择(剪切,复制 ...

  7. 文本框内容自动投影,浅谈C#中事件的写法与应用

    C#中委托和事件,对应设计模式:Observe观察者模式 触发事件A的时候自动引起事件B的改变 有两个打开的窗体Form1,Form2 都有一个文本框控件TextBox Form1的文本框输入内容时, ...

  8. Python批量提取Excel文件中文本框组件里的文本

    开学第一课:拜托,一定不要这样问Python问题 中国大学MOOC"Python程序设计基础"免费学习地址 2020年秋季学期Python教材推荐与选用参考 推荐图书: <P ...

  9. Android QPython3 制作简易GUI长文本框界面

    #QPython3H 制作简易GUI长文本框界面 #函数代码部分: import androidhelper as android droid=android.Android() from qsl4a ...

最新文章

  1. [2774]小P的故事——神奇的发票报销 (sdut)
  2. 我国人工智能五大开放创新平台集体亮相
  3. c语言注释的开始标记符和结束标记符分别为,C语言程序设计填空题
  4. AI 芯片让你升级智能手机,IoT计算智能革命爆发
  5. ubuntu Gitolite管理git server代码库权限
  6. 分布式文件系统-HDFS(   HDFS全称是Hadoop Distributed System)
  7. 不重启服务如何定时更新进程中的一个对象
  8. 子列和列_最大子列和 - fanlinglong - 博客园
  9. 利用bloom filter算法处理大规模数据过滤
  10. 支持HTML5的浏览器
  11. C#录制声卡声音喇叭声音音箱声音
  12. Selenium - What will happen behind the scenes when running client code
  13. SNAT/DNAT/MASQUERADE
  14. 【Luogu】P8195 小智的疑惑
  15. 静态文档,动态文档和活动文档
  16. webp怎么转png?图片webp格式怎么转换?
  17. Python发送验证码短信
  18. PaddlePaddle运行时出现EnforceNotMet: Enforce failed错误
  19. 计算机机本科最高学历,我国的“最高学历”是什么?博士后不是正确答案,别再无知了...
  20. win10远程桌面连接计算机密码错误,win10远程桌面连接错误

热门文章

  1. LiveVideoStackCon 2018社区编辑门票兑换启动
  2. 【Go API 开发实战 6】基础 2:配置文件读取
  3. 项目中要使用到动态规划该怎么应用,怎么说?
  4. springboot配置定时任务及常用的cron表达式
  5. leetcode 436. Find Right Interval | 436. 寻找右区间(二分查找不小于某值的第一个位置)
  6. 【Modelsim零基础入门】新建项目+运行第一个verilog仿真程序:一位加法器
  7. java安全编码指南之:文件IO操作
  8. Spring boot 自定义banner
  9. 高中生计算机创新大赛作品,2017 第十届“英特尔杯”全国大学生软件创新大赛获奖作品...
  10. 【MySQL性能优化】数据库设计三大范式(二)