matplotlib作为Python中著名的数据可视化工具,其官网也提供了在PyQt4中使用的源码,这里举一个应用实例,以备不时之需。

1) 利用Qt Designer创建GUI界面

Demo的GUI界面,如图1所示,其中利用QFrame作为放置matplotlib界面的容器。然后调用pyuic4.bat -o ui_maindialog.py maindialog.ui编译UI界面。

图1 GUI设计界面

2) maindialog.py程序代码

#!/usr/bin/env python
#-*- coding: utf-8 -*- import numpy as np
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from ui_maindialog import Ui_MainDialog
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas # matplotlib对PyQt4的支持
from matplotlib.figure import Figure class MainDialog(QDialog, Ui_MainDialog):
def __init__(self, parent=None):
super(MainDialog, self).__init__(parent)
self.setupUi(self)
self._createFigures()
self._createLayouts()

  # 创建matplotlib的画布
def _createFigures(self):
self._fig = Figure(figsize=(8, 6), dpi=100, tight_layout=True)
self._fig.set_facecolor("#F5F5F5") # 背景色
self._fig.subplots_adjust(left=0.08, top=0.92, right=0.95, bottom=0.1) # Margins
self._canvas = FigureCanvas(self._fig) # 画布
self._ax = self._fig.add_subplot(111) # 增加subplot
self._ax.hold(True)
self._initializeFigure() def _createLayouts(self):
layout = QHBoxLayout(self.frame)
layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(self._canvas) # Add Matplotli def _initializeFigure(self):
Font = {'family': 'Tahoma',
'weight': 'bold',
'size': 10}
# Abscissa
self._ax.set_xlim([380, 780])
self._ax.set_xticks([380, 460, 540, 620, 700, 780])
self._ax.set_xticklabels([380, 460, 540, 620, 700, 780], fontdict=Font)
self._ax.set_xlabel("Wavelength (nm)", fontdict=Font)
# Ordinate
self._ax.set_ylim([0.0, 1.0])
self._ax.set_yticks(np.arange(0.0, 1.1, 0.2))
self._ax.set_yticklabels(np.arange(0.0, 1.1, 0.2), fontdict=Font)
self._ax.set_ylabel("Spectral Radiance (W/(m$^2$*sr*nm))", fontdict=Font) self._ax.grid(True) # Grid On def _updateFigures(self):
Font = {'family': 'Tahoma',
'weight': 'bold',
'size': 10} self._ax.clear() maxY = 0.0 x = np.arange(380, 781)
y = np.random.rand(401) self._ax.plot(x, y, 'r', label="Data")

     maxY = max(y)
if maxY <= 0:
self._initializeFigure()
else:
self._fig.subplots_adjust(left=0.11, top=0.92, right=0.95, bottom=0.1)
# Abscissa
self._ax.set_xlim([380, 780])
self._ax.set_xticks([380, 460, 540, 620, 700, 780])
self._ax.set_xticklabels([380, 460, 540, 620, 700, 780], fontdict=Font)
self._ax.set_xlabel("Wavelength (nm)", fontdict=Font)
# Ordinate
self._ax.set_ylim([0.0, maxY])
self._ax.set_yticks([0.0, maxY / 4.0, maxY / 2.0, maxY * 3 / 4.0, maxY])
self._ax.set_yticklabels(
["%.1e" % 0.0, "%.1e" % (maxY / 4.0), "%.1e" % (maxY / 2.0), "%.1e" % (maxY * 3.0 / 4.0),
"%.1e" % maxY], fontdict=Font)
self._ax.set_ylabel("Spectral Radiance (W/(m$^2$*sr*nm))", fontdict=Font) self._ax.grid(True)
self._ax.legend(loc="best", fontsize="small").draggable(state=True) # Legend
self._canvas.draw() @pyqtSlot()
def on_plotPushButton_clicked(self):
self._updateFigures()

初始界面如图2所示:

图2 GUI初始界面

3) 点击plot按键后

界面显示见图3:

图3 点击Plot按键后界面

 

在PyQt4中使用matplotlib的更多相关文章

  1. uwsgi+flask环境中安装matplotlib

    uwsgi+flask的python有自身的virtual environment,可以通过如下命令进入 . venv/bin/activate 虽然通过sudo apt-get install py ...

  2. python中利用matplotlib绘图可视化知识归纳

    python中利用matplotlib绘图可视化知识归纳: (1)matplotlib图标正常显示中文 import matplotlib.pyplot as plt plt.rcParams['fo ...

  3. 使用python中的matplotlib 画图,show后关闭窗口,继续运行命令

    使用python中的matplotlib 画图,show后关闭窗口,继续运行命令 在用python中的matplotlib 画图时,show()函数总是要放在最后,且它阻止命令继续往下运行,直到1.0 ...

  4. python 1: 解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题

    问题: 我在ubuntu14.04下用python中的matplotlib模块内的pyplot输出图片不能显示中文,怎么解决呢? 解决: 1.指定默认编码为UTF-8: 在python代码开头加入如下 ...

  5. 【Python开发】使用python中的matplotlib进行绘图分析数据

    matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备, ...

  6. pyqt中使用matplotlib绘制动态曲线

    一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...

  7. pyqt中使用matplotlib绘制动态曲线 – pythonic

    一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...

  8. Python 中使用 matplotlib 绘图中文字符显示异常的问题

    最近在使用 Python matplotlib 绘制图表时发现中文字符不能正确显示:比如在绘制折线图时,中文全部显示成▢▢▢的格式,虽然将数据改成英文就没什么问题,但是所有数据都这么做时不可行的,于是 ...

  9. 【转】 Python 中,matplotlib绘图无法显示中文的问题

    在python中,默认情况下是无法显示中文的,如下代码: import matplotlib.pyplot as plt # 定义文本框和箭头格式 decisionNode = dict(boxsty ...

随机推荐

  1. zookeeper集群环境安装配置

    众所周知,Zookeeper有三种不同的运行环境,包括:单机环境.集群环境和集群伪分布式环境 在此介绍的是集群环境的安装配置 一.下载: http://apache.fayea.com/zookeep ...

  2. Java---类反射(2)---类反射加强

    经过前面的一篇博客,Java-类反射(1),相信大家对类反射有了一定的了解了. 下面来进行对类反射的加强,了解一下怎么通过类反射去new一个对象, 怎么通过类反射去访问其他类的方法. 怎么通过类反射去 ...

  3. android关于图片缩放

    网上有许多关于图片缩放的demo,本人都感觉不怎么好用,最近在github看到了 一个简单的支持多指缩放图片的Android View类 gesture-imageview (地址:https://g ...

  4. Windows下移动硬盘无法识别但是Mac下可以识别

    今天遇到一个问题,具体如下: 在Mac下正常使用的移动硬盘,在Windows下无法识别,打开显示"磁盘结构损坏且无法读取" 分析:Mac下既然能够正常使用,那么硬盘就应该是正常的, ...

  5. LA 3263 欧拉定理

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  6. poj1009

    题目大意:边缘检测 IONU卫星成像公司,公司记录和储存非常大的图片使用行程编码,你需要编写一个程序读取被压缩的图像,发现图像的边缘,描述如下,并且输出另一个发现的边缘压缩图像. 一个简单的边缘检测算 ...

  7. Windows的应用管理工具 PortableApps,Chocolatey和Ninite

    以前为了让我的firefox变成portable的,我使用了PortableApps,它不只是做软件的绿色版,而且也是一个软件的管理平台,可以通过它来管理软件的更新,挺方便的. 前段时间试用Scrip ...

  8. iphone匹配邮箱的正则表达式

    NSString *str = [NSString stringWithString:@"\\b([a-zA-Z0-9%_.+\\-]+)@([a-zA-Z0-9.\\-]+?\\.[a-z ...

  9. PHP 計算字符串長度函數

    PHP內置的字符串長度函數strlen無法正確處理中文字符串,它得到的只是字符串所占的字節數.對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是3倍的差 ...

  10. [转] Linux下查看文件和文件夹大小

    当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. ...