三维曲面:
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#定义坐标轴
fig = plt.figure()
ax1 = plt.axes(projection='3d')
#ax = fig.add_subplot(111,projection='3d') #这种方法也可以画多个子图
#定义三维数据
xx = np.arange(-5,5,0.5)
yy = np.arange(-5,5,0.5)
X, Y = np.meshgrid(xx, yy)
Z = np.sin(X)+np.cos(Y)
#作图
ax1.plot_surface(X,Y,Z)
ax1.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow') #等高线图,要设置offset,为Z的最小值
fig = plt.figure() #定义新的三维坐标轴
ax3 = plt.axes(projection='3d')
#定义三维数据
xx = np.arange(-5,5,0.5)
yy = np.arange(-5,5,0.5)
X, Y = np.meshgrid(xx, yy)
Z = np.sin(X)+np.cos(Y)
#作图
ax3.plot_surface(X,Y,Z,cmap='rainbow')
ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow') #等高线图,要设置offset,为Z的最小值
plt.show()
运行结果:
三维散点图:
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#定义坐标轴
fig = plt.figure()
ax1 = plt.axes(projection='3d')
#ax = fig.add_subplot(111,projection='3d') #这种方法也可以画多个子图
#生成三维数据
xx = np.random.random(20)*10-5 #取100个随机数,范围在5~5之间
yy = np.random.random(20)*10-5
X, Y = np.meshgrid(xx, yy)
Z = np.sin(np.sqrt(X**2+Y**2))
#作图
ax1.scatter(X,Y,Z,cmap='rainbow',alpha=0.3,c=np.random.random(400),s=np.random.randint(10,20, size=(20, 40))) #生成散点.利用c控制颜色序列,s控制大
plt.show()
运行结果:
参考:https://blog.csdn.net/weixin_44080811/article/details/95750019?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161763087416780264013436%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161763087416780264013436&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-95750019.first_rank_v2_pc_rank_v29&utm_term=matplotlib%E7%BB%98%E5%88%B6%E4%B8%89%E7%BB%B4%E5%9B%BE&spm=1018.2226.3001.4187