一、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()
函数详细解释
# 创建新的图形
fig = plt.figure(num=1)
作用为一个创建新的图形figure()
函数具有以下常用可选项,num
:为图片提供一个独一无二的标识,若无该项,则程序将自动自1开始累加,figure1、figure2、figure3…figsize
:图片大小,默认值为6.4*4.8,单位为英寸dpi
:每英寸点数,默认值100facecolor
:背景色,默认为白色edgecolor
:边框色,默认为白色frameon
:bool值,False不绘制图形框架,True(默认)绘制框架
# 三维轴对象
ax = Axes3D(fig)
作用是创建一个三维的坐标轴
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时的场景。
color
:曲面片的颜色。cmap
:曲面片的颜色。ColorMap将级别值映射到颜色。例如cmap=plt.get_cmap('rainbow')
,彩色的好看好多~shade
:阴影,默认为Truelightsource
:使用光源
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')
这个的作用是绘制投影的部分(如下图)
contourf()
函数部分项如下,
X, Y
:坐标值
Z
:高度值
colors
:颜色
alpha
:默认值:不透明度,介于0(透明)和1(不透明)之间。
cmap
:ColorMap将级别值映射到颜色。
最终图形如下
三、参考链接及相关资源
1 官方文档matplotlib介绍文档 2 推荐一个很不错的视频莫烦Pyhton画图教程