python 条形图 动画_带Python的动画三维条形图
最后,我找到了一种方法,将图表嵌入到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的动画三维条形图相关推荐
- python函数示例_带Python示例的complex()函数
python函数示例 Python complex()函数 (Python complex() function) complex() function is a library function i ...
- python函数示例_带Python示例的float()函数
python函数示例 Python float()函数 (Python float() function) float() function is a library function in Pyth ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python动画库_创造生动有趣的动画,Matplotlib库大显身手
全文共2153字,预计学习时长4分钟或更长 用Matplotlib模拟雨 动画是呈现各种现象的有趣方式.在描述像过去几年的股票价格.过去十年的气候变化.季节性和趋势等时间序列数据时,与静态图相比,动画 ...
- 用python制作3d动画_-用 Python 做科学计算--Visual-制作3D演示动画
# Visual-制作3D演示动画 [Visual](http://vpython.org) 是Python的一个简单易用的3D图形库,使用它可以快速创建3D场景.动画.和TVTK相比它更加适合于创建 ...
- 如何用python制作三维动画_用Python制作3D动画
很多小伙伴可能不知道,在3D动画甚至电影制作的过程中,Python也在其中扮演了很重要的角色呢! 比如皮克斯的动画片一般使用Maya软件制作,并且流程中使用到了大量的Maya Python插件. 另外 ...
- python制作的炫酷动画_用Python一键生成炫酷九宫格图片,火了朋友圈
作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...
- python 条形图 负值_使用python matplotlib获取正负值的堆积条形图
我正在尝试使用python Matplotlib绘制堆积的条形图,并且我要绘制正值和负值.我看过其他文章,谈论如何用正值和负值绘制堆积的条形图,但是没有一个使用Matplotlib完成,所以我找不到解 ...
最新文章
- BZOJ 2190: [SDOI2008]仪仗队
- 空气质量html模板,基于HTML5+CSS3移动端空气质量APP的设计与实现
- go语言笔记——调试还很弱,用gdb来做?可用panic和defer。格式化代码使用gofmt,貌似我的vim插件是自带...
- 【Google Play】应用 “更新被拒“ 后续处理 ( 上传新版本后 , 一定要停用被拒的版本, 才可以通过审核 | 停用被拒的版本 | 送审 )
- iphone双卡_内部消息:iPhone 12不支持双卡5G,但国行问题不大|iphone|国行|手机|高通|骁龙...
- 在运行时交换出Spring Bean配置
- App 留客率出炉:iPhone 大胜 Android!
- 腾讯回应“QQ 冻结”;高德上线“家人地图”惹争议;Linux 内核讨论引入 Rust 代码| 极客头条...
- 百度文库复制内容,留作笔记
- MockingBot for Mac(原型设计协同插件)sketch插件
- scapy(二):基于流量分析的SQL注入检测
- ERP系统实施一般方法与步骤
- java for 代表什么意思_java中for是什么意思?
- Python实现psf2otf
- WebServices(转)
- 美术2.4 UV原理基础
- 宁强天津中学2021高考成绩查询,宁强县天津高级中学教务信息网
- 什么方法可以将pdf压缩到最小
- C语言的va_list使用方法
- Java进阶:java程序设计慕课版课后答案浪潮优派