matplotlib绘制李萨如图(四) 利用交互模式动态3D李萨如图
matplotlib绘制李萨如图(四)
——动态3D李萨如图
文章目录
- matplotlib绘制李萨如图(四)
- 1 前期回顾
- 2 主要函数
- plt.ion()
- plt.ioff()
- plt.clf()
- plt.cla()
- plt.pause()
- 3 完整代码
1 前期回顾
老规矩,要绘制动态3D图,肯定要先会静态3D图。
由于FuncAnimation
函数貌似还只能用于2D图,所以我们在画3D图的时候只能另辟蹊径,使用交互模式。
2 主要函数
交互模式的使用很简单,只需要一组打开/关闭交互模式的函数和一些清除原先画面的函数就够了。
plt.ion()
打开交互模式。
plt.ioff()
关闭交互模式。
plt.clf()
清空figure()
出来的画布,前缀可以是plt
,也可以是figure
出来的画布的名字,如fig.clf()
。
fig=plt.figure()
plt.clf()
plt.cla()
清空单个图像,前缀可以为要清空的图像的名称,如axs.cla()。
fig=plt.figure()
axs=fig.add_subplot(111,projection='3d')
plt.pause()
暂停,单位为s。
3 完整代码
有了上述交互式的组件,我们只需要在plt.ion
和plt,ioff
中间按照要求自己编写程序即可。
根据查到的其他文章所说,在matplotlib中画图有两种显示模式:
(1)阻塞模式,即必须利用plt.show()显示图片,且图片关闭之前代码将阻塞在该行。
(2)交互模式,即plt.plot()后立马显示图片,且不阻塞代码的继续运行。
但是博主惊奇的发现,即使我注释掉了开/关交互式的语句,动图依然可以正常显示,复制了其他博主的代码注释掉对应语句后依然如此,这个问题在博主至今未解决,欢迎大神解答。
cla()
版本:
import matplotlib.pyplot as plt
import numpy as np
import time
import matplotlib.animation as animation
fig=plt.figure()
plt.ion()
theta=np.linspace(0,2*np.pi,1000)
p=3
q=3
n=1/2
m=5
axs=fig.add_subplot(111,projection='3d')
for p in range(1,m+1,1):for q in range(1,m+1,1):axs.cla()x=np.sin(p*theta)y=np.sin(q*theta+n*np.pi)z=np.cos(p*theta)+np.cos(q*theta+n*np.pi)axs.plot3D(x,y,z,'gray')axs.text(0.15,-0.15,2,'p=%d'% p,ha='center',va='top',fontsize=12)axs.text(-0.15,0.15,2,'q=%d'% q,ha='center',va='top',fontsize=12)axs.view_init(0,45)plt.pause(0.2)
plt.ioff()
plt.show()
clf()
版本:
import matplotlib.pyplot as plt
import numpy as np
import time
import matplotlib.animation as animation
fig=plt.figure()
#plt.ion()
theta=np.linspace(0,2*np.pi,1000)
p=3
q=3
n=1/2
m=5
for p in range(1,m+1,1):for q in range(1,m+1,1):plt.clf()axs=fig.add_subplot(111,projection='3d')axs.set(xlim=[-1,1],ylim=[-1,1],zlim=[-2,2],title='Lissajous-Figure-3D')#n=2/m*ix=np.sin(p*theta)y=np.sin(q*theta+n*np.pi)z=np.cos(p*theta)+np.cos(q*theta+n*np.pi)axs.plot3D(x,y,z,'gray')axs.text(0.15,-0.15,2,'p=%d'% p,ha='center',va='top',fontsize=12)axs.text(-0.15,0.15,2,'q=%d'% q,ha='center',va='top',fontsize=12)axs.view_init(0,45)plt.pause(0.2)
#plt.ioff()
plt.show()
matplotlib绘制李萨如图(四) 利用交互模式动态3D李萨如图相关推荐
- python绘制3d图-python3利用Axes3D库画3D模型图
Python3利用Axes3D库画3D模型图,供大家参考,具体内容如下 最近在学习机器学习相关的算法,用python实现.自己实现两个特征的线性回归,用Axes3D库进行建模. python代码 im ...
- 制作gif动图python_利用Python如何制作好玩的GIF动图详解
前言 之前我们分享过用Python进行可视化的9种常见方式.其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表. 假如电脑上没有 ...
- python画3d图-python3利用Axes3D库画3D模型图
Python3利用Axes3D库画3D模型图,供大家参考,具体内容如下 最近在学习机器学习相关的算法,用python实现.自己实现两个特征的线性回归,用Axes3D库进行建模. python代码 im ...
- php数据关系图,如何利用navicat查看数据表的ER关系图
文章背景: (相关推荐:navicat) 由于工作需要,现在要分析一个数据库,然后查看各个表之间的关系,所以需要查看表与表之间的关系图,专业术语叫做ER关系图. 默认情况下,Navicat显示的界面是 ...
- 【原创】用Matplotlib绘制的图表,真的是太惊艳了!!
当我们谈论Python中的数据可视化,Matplotlib是一个不可或缺的库.它强大的功能和灵活性使我们能够以各种方式轻松地呈现数据.然而,有时候,我们可能会忽视Matplotlib在创建视觉上令人惊 ...
- 四步轻松实现用Visio画UML类图
原文链接:四步轻松实现用Visio画UML类图 四步轻松实现用Visio画UML类图 本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对 ...
- vue 使用echarts实现3D饼图和环形图
记录一下echarts实现3d饼图和环形图功能## 标题 实现效果 首先第一步安装echarts和echarts-gl npm install echarts echarts-gl安装最新版本可能会有 ...
- eacharts和eacharts-gl、3d饼图、3d柱状图加折线图、下载gl报错解决
eacharts-gl下载时版本一定要和eacharts版本对应.否则不出效果!!目前已知可以生效有: 第一种1: npm install echarts@5.1.2 --save npm insta ...
- echarts实现3d环形饼状图
首先确保在项目中引入了echarts和echarts-gl "echarts": "^4.9.0", "echarts-gl": " ...
- python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程
前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...
最新文章
- 机器学习实战读书笔记(一)机器学习基础
- LeetCode Range Sum Query - Mutable(树状数组、线段树)
- ThinkPad T61安装Ubuntu9.10全记录
- JQuery获取元素的N种方法
- HTML5 CSS3的新交互特性
- win32 禁用缩放功能_Firefox 73 将引入全局缩放功能,在所有网站都可适用
- java注释类型_Java 8类型注释
- PXE 网络化安装linux系统
- 【java】JVM中Perm区持续上涨问题
- 《Deep Learning》笔记
- RQNOJ 30 愚蠢的矿工 解题报告
- 图的遍历(深度优先搜索)
- IP协议详解【IP报文头部结构、IP分片、IP路由、IP转发】
- Excel如何复制粘贴筛选后的单元格
- 阿里云免费ssl证书(PFX格式证书)安装
- C++ STL之命名空间、函数模板、类模板
- linux- 日志管理
- Vue 新手学习笔记:vue-element-admin 之按钮级权限管控
- 微型计算机的运算器控制器及内存,计算机的运算器、控制器及内存储器统称为什么?...
- Qt入门学习之美化与样式设置