3D旋转玫瑰花:python-matplotlib实现
off999 2024-11-10 10:34 19 浏览 0 评论
1 说明
====
1.1 环境:python3.8+matplotlib3.3.2
1.2 效果图:3D自旋转玫瑰花
2 技术要点:
=========
2.1 3D的matplotlib作图mpl_toolkits.mplot3d import Axes3D和numpy的相关函数的复习。
2.2 matplotlib动画设置animmation复习。
2.3 matplotlib.cm颜色表中cm=colormap复习。
#可以通过调用以下内容找到matplotlib版本中可用的颜色图的完整列表
>>> from matplotlib import cm
>>> dir(cm)3 代码步骤:
========
3.1 第一步:导入模块
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.animation as animmation
import numpy as np3.2 第二步:设置窗口和图表
#初始化一个图片,大小默认
fig=plt.figure()
#窗口标题名
fig.canvas.set_window_title('3D-rose')
#图片背景颜色
fig.patch.set_facecolor('black')
#定一个3d的画布
ax=fig.gca(projection='3d')
#轴背景颜色
ax.set_facecolor("black")3.3 第三步:3D玫瑰花的初始数据
#难点,大量使用numpy的相关函数
#25代表花瓣想的方向,越大方向向下;24也是,越小代表花瓣方向向下
#10代表花瓣数
#x轴坐标
[x,t]=np.meshgrid(np.array(range(25))/24.0,np.arange(0,900,0.5)/900*10*np.pi-2*np.pi)
#角度
p=(np.pi/2)*np.exp(-t/(8*np.pi))
#z轴坐标
z=1-(1-np.mod(3.6*t,2*np.pi)/np.pi)**4/2
#y轴坐标
y=2*(x**2-x)**2*np.sin(p)
#半径
r=z*(x*np.sin(p)+y*np.cos(p))其中np.sin、np.cos、np.pi、np.exp、np.mod等数学函数。
numpy.exp():返回e的幂次方,e是一个常数为2.71828。
numpy.mod(x1, x2):
相当于Python模运算符``x1%x2``,并且与除数x2具有相同的符号(正负号)。
====================================================
X,Y = numpy.meshgrid(x, y)
输入的x,y,就是网格点的横纵坐标列向量(非矩阵)
输出的X,Y,就是坐标矩阵。
np.meshgrid生成的坐标矩阵可以用np.stack指定axi还原各个点坐标。
===================================================
np.arange()函数返回一个有终点和起点的固定步长的排列,如[1,2,3,4,5],起点是1,终点是5,步长为1。
3.4 第四步:定义三维坐标
#定义三维坐标xx、yy、zz
xx=r*np.cos(t)
yy=r*np.sin(t)
zz=z*(x*np.cos(p)-y*np.sin(p))3.5 第五步:动画设置,注意return 后面的fig逗号
#初始化
def init():
ax.plot_surface(xx,yy,zz,rstride=1,cstride=1,cmap=cm.gist_rainbow_r,linewidth=0,antialiased=True)
return fig,
#动画
def animate(i):
ax.view_init(elev=10., azim=i)
return fig,
#动画挂起
#在这里设置一个600帧的动画,每帧之间间隔0毫秒
anim = animmation.FuncAnimation(fig, animate, frames = 600, init_func = init,interval = 0)3.6 第六步:plt相关设置
#数据清空和画轴不显示
plt.gca().set_axis_off()
#图标标题名,字体大小和颜色
plt.title('3D自旋转玫瑰花',fontsize=20,color='green')
#图片展示
plt.show()相关推荐
- 戴尔笔记本电脑黑屏却开着机
-
对于电脑黑屏的处理基本上采用排除、替换相结合的方法,其原则应本着先替换排除可疑性最大的部件。对于普通电脑用户来讲,专业知识不足,可以按下列步骤分析故障原因,以便可以自己动手排除故障。首先检查接触是否良...
- 手机版电脑桌面下载(手机电脑桌面下载软件安装包)
-
只有电脑版手机助手软件,没有手机桌面这个软件在电脑上点击今日头条APP下载安装即可哦你好,陌陌电脑版如果说你想要下载到电脑桌面的话,你只需要长按把它添加到你的电脑桌面就可以了。要将软件下载到桌面并创建...
- ghost备份中文图解(ghost备份1837)
-
其实是这样的ghost文件备份后会生成两个文件一个是.GHO一个是.GHS文件FAT32格式的分区,单个文件最大只支持到2G(2048M),如果你的镜像>2G,这时的做的GHOST在一个文件里装...
- win10一键重装win7(win10一键重装系统)
-
1、首先准备一个4GB以上可以正常使用的U盘。2、在一个可以正常使用的电脑上,下载老毛桃软件并安装。3、去网上下载所需的win7,win10选择自己所需要的系统,并下载下来。4、插入u盘并打开老毛桃...
- 联想软件商店官网(联想应用商店官网下载安装)
-
要设置联想电脑应用商店,首先需要打开商店应用并进行登录。之后可以根据个人需求浏览并下载商店中的应用,也可以通过搜索功能查找特定应用。在商店中还可以管理已下载的应用、更新应用以及查看应用评价和评论。此外...
- tp路由器设置登录网址(tplink路由器设置网址登录)
-
tplogin.cn是TPlink路由器界面的默认登陆入口地址。TPlink常见的登陆入口地址:192.168.1.1,192.168.0.1,tplogin.cn,192.168.0.254,192...
-
- qq邮箱码正确格式(qq邮箱格式怎么写正确)
-
1.每个人在注册QQ时都会有关联的一个邮箱,它的格式就是“QQ号码@qq.com”。2.用户可以免费开通自己的手机号码邮箱帐号。3.QQ邮箱还可以注册“……@foxmail.com”这样的商务型帐号。4.@qq.com邮箱可以有一个数字帐号...
-
2025-11-18 13:03 off999
- 移动硬盘做启动盘教程(移动硬盘如何制作系统启动盘)
-
1.在xp系统中安装矮人DOS。2.在xp系统中用PQ(windows版)将移动硬盘的第一个分区设为活动,并激活。(注:你将要在该分区写入引导信息)3.重启电脑,进入矮人DOS,选择支持usb驱动...
- 怎样打开cdr文件(.cdr用什么打开)
-
cdr是什么文件?cdr文件用什么打开?cdr文件是CorelDraw图像制作软件标准的输出格式,与photoshop(PS)图片设计软件类似都属于图片设计软件,需要打开cdr文件我们就需要先了解C...
- 微软拼音输入法好用吗(微软拼音输入法好用吗知乎)
-
CTRL(Control)组合键;Ctrl+Alt+A(截屏);Ctrl+A(All)全选;Ctrl+C(Copy)复制;Ctrl+V粘贴Ctrl+S保存,窗口...
- 怎么设置屏保密码(怎么设置屏保密码和锁定时间)
-
屏保密码设置的方法步骤1、鼠标左键单击桌面下的【开始】菜单键;点击【控制面板】;2、点击【外观和个性化】;然后点击【个性化】选项卡中的【更改屏幕保护程序】;3、选择一个自己喜欢的程序,勾选,然后再点击...
- 无法下载ie浏览器怎么办(ie浏览器显示无法下载)
-
如果您在使用IE浏览器时遇到无法下载的问题,以下是一些常见的解决办法:1.清除浏览器缓存:打开IE浏览器,依次点击工具(齿轮图标)->Internet选项->常规选项->...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
