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.ionplt,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李萨如图相关推荐

  1. python绘制3d图-python3利用Axes3D库画3D模型图

    Python3利用Axes3D库画3D模型图,供大家参考,具体内容如下 最近在学习机器学习相关的算法,用python实现.自己实现两个特征的线性回归,用Axes3D库进行建模. python代码 im ...

  2. 制作gif动图python_利用Python如何制作好玩的GIF动图详解

    前言 之前我们分享过用Python进行可视化的9种常见方式.其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表. 假如电脑上没有 ...

  3. python画3d图-python3利用Axes3D库画3D模型图

    Python3利用Axes3D库画3D模型图,供大家参考,具体内容如下 最近在学习机器学习相关的算法,用python实现.自己实现两个特征的线性回归,用Axes3D库进行建模. python代码 im ...

  4. php数据关系图,如何利用navicat查看数据表的ER关系图

    文章背景: (相关推荐:navicat) 由于工作需要,现在要分析一个数据库,然后查看各个表之间的关系,所以需要查看表与表之间的关系图,专业术语叫做ER关系图. 默认情况下,Navicat显示的界面是 ...

  5. 【原创】用Matplotlib绘制的图表,真的是太惊艳了!!

    当我们谈论Python中的数据可视化,Matplotlib是一个不可或缺的库.它强大的功能和灵活性使我们能够以各种方式轻松地呈现数据.然而,有时候,我们可能会忽视Matplotlib在创建视觉上令人惊 ...

  6. 四步轻松实现用Visio画UML类图

    原文链接:四步轻松实现用Visio画UML类图 四步轻松实现用Visio画UML类图 本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对 ...

  7. vue 使用echarts实现3D饼图和环形图

    记录一下echarts实现3d饼图和环形图功能## 标题 实现效果 首先第一步安装echarts和echarts-gl npm install echarts echarts-gl安装最新版本可能会有 ...

  8. eacharts和eacharts-gl、3d饼图、3d柱状图加折线图、下载gl报错解决

    eacharts-gl下载时版本一定要和eacharts版本对应.否则不出效果!!目前已知可以生效有: 第一种1: npm install echarts@5.1.2 --save npm insta ...

  9. echarts实现3d环形饼状图

    首先确保在项目中引入了echarts和echarts-gl "echarts": "^4.9.0", "echarts-gl": " ...

  10. python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...

最新文章

  1. 机器学习实战读书笔记(一)机器学习基础
  2. LeetCode Range Sum Query - Mutable(树状数组、线段树)
  3. ThinkPad T61安装Ubuntu9.10全记录
  4. JQuery获取元素的N种方法
  5. HTML5 CSS3的新交互特性
  6. win32 禁用缩放功能_Firefox 73 将引入全局缩放功能,在所有网站都可适用
  7. java注释类型_Java 8类型注释
  8. PXE 网络化安装linux系统
  9. 【java】JVM中Perm区持续上涨问题
  10. 《Deep Learning》笔记
  11. RQNOJ 30 愚蠢的矿工 解题报告
  12. 图的遍历(深度优先搜索)
  13. IP协议详解【IP报文头部结构、IP分片、IP路由、IP转发】
  14. Excel如何复制粘贴筛选后的单元格
  15. 阿里云免费ssl证书(PFX格式证书)安装
  16. C++ STL之命名空间、函数模板、类模板
  17. linux- 日志管理
  18. Vue 新手学习笔记:vue-element-admin 之按钮级权限管控
  19. 微型计算机的运算器控制器及内存,计算机的运算器、控制器及内存储器统称为什么?...
  20. Qt入门学习之美化与样式设置

热门文章

  1. 什么是OM3、OM4光纤跳线?
  2. 【bug:鳄梨】【上线前修改其他bug急着提交造成的bug】
  3. Linux安装mysql5.7.35
  4. 知识点:计算机网络的 89 个核心概念
  5. 简单解决 Blocked a frame with origin XXX from accessing a cross-origin 。iframe跨域问题
  6. [工具] Seer 代码预览器
  7. php二维数组按照键值排序的方法
  8. TableViewCell 自定义分割线
  9. linux Shell学习笔记第二天
  10. 一个人磊个小山包,与大家磊同一个小山包