一、matplotlib安装

pip安装:

pip install matplotlib

conda安装:

conda install matplotlib

二、绘制图像

1、绘制3D图像

先放源码及结果

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure(num=1)
ax = Axes3D(fig)

X = np.arange(-4,4,0.25)
Y = np.arange(-4,4,0.25)
X,Y = np.meshgrid(X,Y)
Z = np.sin(np.sqrt(X**2+Y**2))

ax.plot_surface(X,Y,Z,rstride=1,cstride=1,edgecolor='black',cmap=plt.get_cmap('rainbow'))
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')
plt.show()

python 渲染3D模型 python加载3d模型_开发语言

函数详细解释

# 创建新的图形
fig = plt.figure(num=1)

作用为一个创建新的图形
figure()函数具有以下常用可选项,
num:为图片提供一个独一无二的标识,若无该项,则程序将自动自1开始累加,figure1、figure2、figure3…
figsize:图片大小,默认值为6.4*4.8,单位为英寸
dpi:每英寸点数,默认值100
facecolor:背景色,默认为白色
edgecolor:边框色,默认为白色
frameon:bool值,False不绘制图形框架,True(默认)绘制框架

# 三维轴对象
ax = Axes3D(fig)

作用是创建一个三维的坐标轴

python 渲染3D模型 python加载3d模型_python_02


Axes3D()函数部分常用项如下,

fig:图像,表示画在哪个图像里

rect:四个浮点型的数,分别代表了距离左下角的坐标、宽度和高度,即(left,bottom,width,height)

azim:方位视角,默认值为-60

elev:仰角,默认值为30

proj_type:投影类型,默认为透视

#计算x,y,z的坐标
X = np.arange(-4,4,0.25)
Y = np.arange(-4,4,0.25)
X,Y = np.meshgrid(X,Y)
Z = np.sin(np.sqrt(X**2+Y**2))

这里是在计算点的坐标,np.meshgrid的作用是根据给定X轴和Y轴所有的点,将X和Y放到两个数组,进行笛卡尔乘积,从而得到所有的点。举个例子,x=[1,2] y=[3,4],那么通过np.meshgrid(X,Y)就可以得到四个坐标[1,3] ,[1,4],[2,3]和[2,4]。

ax.plot_surface(X,Y,Z,rstride=1,cstride=1,edgecolor='black',cmap=plt.get_cmap('rainbow'))

这里的作用是绘制出曲面的图形,但是不包括等高线的图~

plot_surface函数部分项如下,

X, Y, Z:数据值

rcount, ccount:每个方向上使用的最大样本数。如果数据被向下采样,则将被向下采样。默认为50。

rstride, cstride:每个方向的下采样步幅。来看个例子,左图是取rstride=1, cstride=1时的场景,右图是取rstride=2, cstride=2时的场景。

python 渲染3D模型 python加载3d模型_python_03

color:曲面片的颜色。
cmap:曲面片的颜色。ColorMap将级别值映射到颜色。例如cmap=plt.get_cmap('rainbow'),彩色的好看好多~
shade:阴影,默认为True
lightsource:使用光源

ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')

这个的作用是绘制投影的部分(如下图)

python 渲染3D模型 python加载3d模型_开发语言_04


contourf()函数部分项如下,

X, Y:坐标值

Z:高度值

colors:颜色

alpha:默认值:不透明度,介于0(透明)和1(不透明)之间。

cmap:ColorMap将级别值映射到颜色。

最终图形如下

python 渲染3D模型 python加载3d模型_开发语言_05

三、参考链接及相关资源

1 官方文档matplotlib介绍文档 2 推荐一个很不错的视频莫烦Pyhton画图教程