第七章、绘制3D图表和统计地图

7.1、使用mtplot3d绘制3D图表
7.1.1、mplot3d概述
mplot3d是matplotlib中专门绘制3D图表的工具包,它主要包含一个继承自Axes的子类Axes3D,使用Axes3D类可以构建一个三维坐标系的绘图区域。matpl otlib可以通过两种方式创建Axes3d类的对象:一种方式是Axes3D()方法,另一种方式是add_subplot()方法。
1、Axes3D()方法
Axes3D()方法是构造方法,它直接用于构建一个Axes3D类的对象
2、add_subplot()方法
在调用add_subplot()方法添加绘图区域时为该方法传入projection=‘3d’,即指定坐标系的类型为三维坐标系,返回一个Axes3D对象。
7.1.2、绘制常见的3D图表
1、绘制3D线框图
import matplotlib.pyplot as plot
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(‘51’)
plt.show()
在这里插入图片描述
2、绘制3D曲面图
import matplotlib.pyplot as plot
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(x12+y12)
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(‘51’)
plt.show()
在这里插入图片描述
7.1.3、实例1:三维空间的星星
实例代码如下:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
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=‘skyblue’
elif zz>=20:
color=‘#C71585’
ax.scatter(xx,yy,zz,c=color,marker=‘',s=160,
linewidth=1,edgecolor=‘white’)
ax.set_xlabel(‘x轴’)
ax.set_ylabel(‘y轴’)
ax.set_zlabel(‘z轴’)
ax.set_title(‘3D散点图 51’,fontproperties=‘simhei’,fontsize=14)
plt.tight_layout()
plt.show()
在这里插入图片描述
7.2、使用animation制作动图
7.2.1、animation概述
matplotlib在1.1版本的标准库中加入了动画模块——animation,使用改模块Animation类可以实现一些基本的动画效果。Animation类是一个动画基类,它针对于不同的行为分别派生了不同的子类,主要包括FuncAnimation类和Artist Animation类,其中FuncAnimation类表示基于重复调用一个函数的动画;Artist Animation类表示基于一个固定Artist对象的动画。
1、FuncAnimation类
FuncAnimation类是基于函数的动画,它通过重复调用同一个函数来制作动画
fig:表示动画所在的画布
func:表示每帧动画调用的函数
frames:表示动画的长度
init_func:表示用于开始绘制帧的函数
fargs:表示传递给func函数的其他函数
interval:表示更新动画的频率
blit:表示是否更新所有的点
2、ArtistAnimation类
示例代码如下:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation
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(‘51’)
plt.show()
在这里插入图片描述
7.2.2、实例2:三维空间闪烁的空间
示例代码如下:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib.animation import FuncAnimation
plt.rcParams[“font.sans-serif”]=[“SimHei”]
plt.rcParams[“axes.unicode_minus”]=False
xx=np.array([13,5,25,13,9,18,3,39,13,27])
yy=np.array([4,38,16,26,7,19,23,25,10,15])
zz=np.array([7,19,6,12,25,19,23,25,10,15])
fig=plt.figure()
ax=fig.add_subplot(111,projection=‘3d’)
star=ax.scatter(xx,yy,zz,c=’#C71585’,marker=‘‘,s=160)
def animate(i):
if i%2:
color=’#C71585’
else:
color=‘white’
next_star=ax.scatter(xx,yy,zz,c=color,marker='
’,s=160,
linewidth=1,edgcolor=‘black’)
return next_star
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散点图 51’,fontproperties=‘simhei’,fontsize=14)
plt.tight_layout()
plt.show()
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值