IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 绘制3D图表 -> 正文阅读

[Python知识库]绘制3D图表

matplotlib不仅专注于二维图表的绘制,也具有绘制3D图表、统计地图的功能,并将这些功能分别封装到工具包mpL1oolkits.mplot3d、mpL_toolkits.base map中,另外可以结合animation模块给图表添加动画效果。
1.使用mplot3d绘制3D图表:
mplot3d概述:
mplot3d是matplotlib中专门绘制3D图表的工具包,它主要包含一个继承自Axes的子类Axes3D,使用Axes3D类可以构建一个三维坐标系的绘图区域。matpl otlib可以通过两种方式创建Axes3D类的对象:一种方式是Axes3D0方法,另一种方式是add_subplot)方法。
1.1绘制3D线框图

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import axes3d
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
X,Y,Z = axes3d.get_test_data(0.05)
ax.plot_wireframe(X,Y,Z,rstride=10,cstride=10)
plt.title('41')
plt.show()

在这里插入图片描述
1.2绘制3D曲面图

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import numpy as np
x1 = np.arange(-5,5,0.25)
y1 = np.arange(-5,5,0.25)
x1,y1 = np.meshgrid(x1,y1)
r1 = np.sqrt(x1**2 + y1**2)
z1 = np.sin(r1)
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.plot_surface(x1,y1,z1,cmap=cm.coolwarm,linewidth=0,antialiased=False)
ax.set_zlim(-1.01,1.01)
plt.title('41')
plt.show()

在这里插入图片描述
实例1:三维空间的星星

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
x = np.random.randint(0,40,30)
y = np.random.randint(0,40,30)
z = np.random.randint(0,40,30)
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
for xx, yy, zz, in zip(x,y,z):
    color='y'
    if 10 < zz < 20:
        color = '#c71585'
    elif zz >= 20:
        color = '#008B8B'
    ax.scatter(xx,yy,zz, c=color, marker='*', s=160, linewidth=1, edgecolor='black')
ax.set_xlabel('x轴')
ax.set_ylabel('y轴')
ax.set_zlabel('z轴')
ax.set_title('3D散点图  41', fontproperties='simhei', fontsize=14)
plt.tight_layout()
plt.show()

在这里插入图片描述

2.使用animation制作动图:
animation概述
matplotlib在1.1版本的标准库中加入了动画模块——animation,使用该模块的Animation类可以实现一些基本的动画效果。Animation类是一个动画基类,它针对不同的行为分别派生了不同的子类,主要包括FuncAnimation类和Artist Animation类。其中,FuneAnimation类表示基于重复调用一个函数的动画;ArtistAnimation类表示基于一组固定Artist(标准的绘图元素,比如文本、线条、矩形等)对象的动画。
2.1FuncAnimation类
FuncAnimation是基于函数的动画类,它通过重复调用同一函数来制作动画。

import matplotlib.pyplot as plt 
from matplotlib.animation import FuncAnimation
import numpy as np
x = np.arange(0,2*np.pi,0.01)
fig, ax = plt.subplots()
line, =ax.plot(x,np.sin(x))
def animate(i):
    line.set_ydata(np.sin(x+i/10.0))
    return line
def init():
    line.set_udata(np.sin(x))
    return line
ani = FuncAnimation(fig=fig, func=animate, frames=100, init_func=init, interval=20, blit=False)
plt.title('41')
plt.show()

在这里插入图片描述
2.2ArtistAnimation类
ArtistAnimation是基于一组Artist对象的动画类,它通过一帧一帧的数据制作动画。

import matplotlib.pyplot as plt 
from matplotlib.animation import ArtistAnimation
import numpy as np
x = np.arange(0,2*np.pi,0.01)
fig, ax = plt.subplots()
arr = []
for i in range(5):
    line = ax.plot(x,np.sin(x+i))
    arr.append(line)
ani = ArtistAnimation(fig=fig, artists=arr, repeat=True)
plt.title('41')
plt.show()

在这里插入图片描述
实例2:三维空间闪烁的星星

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
import numpy as np
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
xx =np.array([13,5,25,13,9,19,3,39,13,27])
yy =np.array([4,38,16,26,7,19,28,10,17,18])
zz =np.array([7,19,6,12,25,19,23,25,10,15])
fig = plt.figure()
ax=fig.add_subplot(111,projection='3d')
start = ax.scatter(xx,yy,zz, c='#C71585',marker='*',s=160, linewidth=1, edgecolor='black')
def animate(i):
    if i % 2:
        color = '#C71585'
    else:
        color = 'white'
    next_start= ax.sscatter(xx,yy,zz, c=color, marker='*',s=160,linewidth=1, edgecolor='black')
    return next_start
def init():
    return star
ani = FuncAnimation(fig=fig, func=animate, frames=None, init_func=init, interval=1000, blit=False)
ax.set_xlabel('x轴')
ax.set_ylabel('y轴')
ax.set_zlabel('z轴')
ax.set_title('3D散点图  41', fontproperties='simhei', fontsize=14)
plt.tight_layout()
plt.show()

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:14:01  更:2022-04-06 16:16:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:44:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码