一、引言
最近一直在学习Python方面的知识,有幸学习到了数据分析与可视化这一模块,感觉绘制三维图形这一块十分有意思。下面是我最近写的几个小的例子,与大家分享。
二、简介
首先我们在这一模块需要引入数值计算可视化库matplotlib,这个库主要依赖于numpy模块和tkinter模块,它可以绘制多种样式的图形,包括线图、直方图、饼图、散点图、三维可视化图等,是计算可视化的重要工具。
在终端中输入命令安装matplotlib模块:
pip install matplotlib
三、具体例子展示
1.绘制正弦曲线
plot函数可以绘制给定定义域与值域的函数图像。
import numpy as np
import matplotlib
import pylab as p1
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
x = np.arange(0,2*np.pi,0.01)
y = np.sin(x)
p1.plot(x,y)
p1.xlabel("x")
p1.ylabel("y")
p1.title("sin")
p1.show()
2.三维视图
import numpy as np
import matplotlib
import pylab as p1
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
x,y = np.mgrid[-2:2:20j,-2:2:20j]
z = 50 * np.sin(x+y)
ax = plt.subplot(111,projection = "3d")
ax.plot_surface(x,y,z,rstride = 2,cstride = 1,cmap = plt.cm.Blues_r)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
plt.show()
效果图:
import numpy as np
import matplotlib
import pylab as p1
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
rho,theta = np.mgrid[0:1:40j,0:2*np.pi:40j]
z = rho**2
x = rho*np.cos(theta)
y = rho*np.sin(theta)
ax = plt.subplot(111,projection = "3d")
ax.plot_surface(x,y,z)
plt.show()
效果图:
import numpy as np
import matplotlib
import pylab as p1
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
from matplotlib import cm
#import matplotlib.pyplot as plt
#import numpy as np
n_angles=36
n_radii=8
radii=np.linspace(0.125,1,n_radii)
#在指定的间隔内返回均匀间隔的数字。
#numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None),endpoint=True表示包括终止点的数。
angles=np.linspace(0,2*np.pi,n_angles,endpoint=False)
angles=np.repeat(angles[:,np.newaxis],n_radii,axis=1)
#将上一个angle的数组生成一个多维的数组,之后生成重复的n_radii个,沿着x轴复制。
x=np.append(0,(radii*np.cos(angles)).flatten())#降到一维
y=np.append(0,(radii*np.sin(angles)).flatten())
z=np.sin(-x*y)
fig=plt.figure()
ax=fig.gca(projection='3d')
ax.plot_trisurf(x,y,z,cmap=cm.jet,linewidth=0.9)#生成曲面图形
plt.show()
效果图: