最后,我找到了一种方法,将图表嵌入到PyQt窗口中(按照给出的in this post的说明)。下面建议的代码生成一个PyQt窗口,其中显示3D条形图。可以使用滑块(时间变化)为图表设置动画。在import sys

from PyQt4 import QtGui, QtCore

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas

from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar

from mpl_toolkits.mplot3d import Axes3D

from math import cos, sin

import matplotlib.pyplot as plt

import numpy as np

# An arbitraty function for z = f(x,t)

def z_xt(x, t):

return 30*sin(5*t) + x**2 + 20

# An arbitraty function for z = f(y,t)

def z_yt(y, t):

return 20*cos(2*t) + y**3/10 + 20

# Superposition z(x,y,t) = z(x,t) + z(y,t)

def z_xyt(f_xt, f_yt):

return f_xt+f_yt

# Definition of space and time domains

nx = 9; dx = 1

ny = 6; dy = 1

nt = 50; dt = 0.05

y, x = np.mgrid[slice(0, ny, dy),slice(0, nx, dx)]

t_list = [round(t*dt,2) for t in range(nt)]

# The matrix that contains the solution for every time step

Z_xyt = [z_xyt(z_xt(x, t), z_yt(y, t)) for t in t_list]

# Plot data in a 3D bar chart

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

x_grid, y_grid = np.meshgrid(np.arange(nx), np.arange(ny))

x_grid = x_grid.flatten()

y_grid = y_grid.flatten()

class Window(QtGui.QDialog):

def __init__(self, parent=None):

super(Window, self).__init__(parent)

# a figure instance to plot on

self.figure = plt.figure()

# this is the Canvas Widget that displays the `figure`

# it takes the `figure` instance as a parameter to __init__

self.canvas = FigureCanvas(self.figure)

# this is the Navigation widget

# it takes the Canvas widget and a parent

self.toolbar = NavigationToolbar(self.canvas, self)

# A slider to make time variations

self.horizontalSlider = QtGui.QSlider(self)

self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)

self.horizontalSlider.valueChanged.connect(self.plot)

self.horizontalSlider.setMinimum(0)

self.horizontalSlider.setMaximum(t_list.__len__()-1)

# set the layout

layout = QtGui.QVBoxLayout()

layout.addWidget(self.toolbar)

layout.addWidget(self.canvas)

layout.addWidget(self.horizontalSlider)

self.setLayout(layout)

# Generate the chart for t=0 when the window is openned

self.plot()

def plot(self):

# Read the slider value -> t = t_list[t_index]

t_index = self.horizontalSlider.value()

# Get the z-data for the given time index

z_data = Z_xyt[t_index].flatten()

# Discards the old chart and display the new one

ax = self.figure.add_subplot(111,projection='3d')

ax.hold(False)

ax.bar3d(x_grid, y_grid, np.zeros(len(z_data)), 1, 1, z_data)

# refresh canvas

self.canvas.draw()

if __name__ == '__main__':

app = QtGui.QApplication(sys.argv)

main = Window()

main.show()

sys.exit(app.exec_())

从图形上看,窗口如下所示:

python 条形图 动画_带Python的动画三维条形图相关推荐

  1. python函数示例_带Python示例的complex()函数

    python函数示例 Python complex()函数 (Python complex() function) complex() function is a library function i ...

  2. python函数示例_带Python示例的float()函数

    python函数示例 Python float()函数 (Python float() function) float() function is a library function in Pyth ...

  3. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  4. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  5. python动画库_创造生动有趣的动画,Matplotlib库大显身手

    全文共2153字,预计学习时长4分钟或更长 用Matplotlib模拟雨 动画是呈现各种现象的有趣方式.在描述像过去几年的股票价格.过去十年的气候变化.季节性和趋势等时间序列数据时,与静态图相比,动画 ...

  6. 用python制作3d动画_-用 Python 做科学计算--Visual-制作3D演示动画

    # Visual-制作3D演示动画 [Visual](http://vpython.org) 是Python的一个简单易用的3D图形库,使用它可以快速创建3D场景.动画.和TVTK相比它更加适合于创建 ...

  7. 如何用python制作三维动画_用Python制作3D动画

    很多小伙伴可能不知道,在3D动画甚至电影制作的过程中,Python也在其中扮演了很重要的角色呢! 比如皮克斯的动画片一般使用Maya软件制作,并且流程中使用到了大量的Maya Python插件. 另外 ...

  8. python制作的炫酷动画_用Python一键生成炫酷九宫格图片,火了朋友圈

    作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...

  9. python 条形图 负值_使用python matplotlib获取正负值的堆积条形图

    我正在尝试使用python Matplotlib绘制堆积的条形图,并且我要绘制正值和负值.我看过其他文章,谈论如何用正值和负值绘制堆积的条形图,但是没有一个使用Matplotlib完成,所以我找不到解 ...

最新文章

  1. BZOJ 2190: [SDOI2008]仪仗队
  2. 空气质量html模板,基于HTML5+CSS3移动端空气质量APP的设计与实现
  3. go语言笔记——调试还很弱,用gdb来做?可用panic和defer。格式化代码使用gofmt,貌似我的vim插件是自带...
  4. 【Google Play】应用 “更新被拒“ 后续处理 ( 上传新版本后 , 一定要停用被拒的版本, 才可以通过审核 | 停用被拒的版本 | 送审 )
  5. iphone双卡_内部消息:iPhone 12不支持双卡5G,但国行问题不大|iphone|国行|手机|高通|骁龙...
  6. 在运行时交换出Spring Bean配置
  7. App 留客率出炉:iPhone 大胜 Android!
  8. 腾讯回应“QQ 冻结”;高德上线“家人地图”惹争议;Linux 内核讨论引入 Rust 代码| 极客头条...
  9. 百度文库复制内容,留作笔记
  10. MockingBot for Mac(原型设计协同插件)sketch插件
  11. scapy(二):基于流量分析的SQL注入检测
  12. ERP系统实施一般方法与步骤
  13. java for 代表什么意思_java中for是什么意思?
  14. Python实现psf2otf
  15. WebServices(转)
  16. 美术2.4 UV原理基础
  17. 宁强天津中学2021高考成绩查询,宁强县天津高级中学教务信息网
  18. 什么方法可以将pdf压缩到最小
  19. C语言的va_list使用方法
  20. Java进阶:java程序设计慕课版课后答案浪潮优派

热门文章

  1. 计算机连接网络名称,如何更改计算机连接网络的名称
  2. 解决win10用户权限导致软件启动异常问题
  3. SE11 创建搜索帮助
  4. cumsum()函数的使用
  5. SVN merge(合并) 时看不到以前的已经合并过的记录的标识
  6. MySQL安装使用学习教程,mysql数据库入门的不二之选
  7. docker commit 和docker build (实战使用以及区别)
  8. 《网络空间安全导论(网安)》简答题
  9. 那些年啊 那些事——一个程序员的奋斗史 ——31
  10. VS Code运行Java文件