Python绘图 二维、三维


最近看数学,发现有时候画个图还真管用,对理解和展示效果都不错。尤其是三维空间和一些复杂函数,相当直观,也有助于解题。
本来想用mathlab,下载安装都太费事,杀鸡不用牛刀,Python基本就能实现,三维图还可以拖动图像来回旋转。
下面分别在二维三维举例说明。

 

1.      二维绘图

1)       描述:
绘制极坐标系中r=1他r=2cosθ的相交部分
(没画的时候,我确实没看出r=2cosθ也是正圆)

2)       程序

[python]  view plain  copy
  1. import numpy as np  
  2. import matplotlib.pyplot as plt  
  3.   
  4. plt.figure(1)  
  5. ax = plt.subplot(111)  
  6. x = np.linspace(0, np.pi * 2200)  # 在0到2pi之间,均匀产生200点的数组  
  7.   
  8. # r = 2cosθ  
  9. r = 2 * np.cos(x)  # 半径  
  10. ax.plot(r * np.cos(x), r * np.sin(x))  
  11.   
  12. # r = 1  
  13. r = 1  
  14. ax.plot(r * np.cos(x), r * np.sin(x))  
  15.   
  16. plt.show()   

3)       运行结果



plot 第一个参数是极坐标角度,第二个参数是半径

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_axes([0.0, 0.0, .6, .6], polar=True)
t = np.linspace(0, 2 * np.pi, 100)
ax.plot(t*4, t, color='blue', lw=3)
plt.show()

同心圆和螺旋,角度变化快,半径变化慢,则螺旋密度高

如果半径值固定,那就是圆,否则,就是螺旋

第一个参数是角度,第二个参数是半径

import numpy as np
import matplotlib.pyplot as plt

theta = np.arange(0, 2*np.pi, 0.02)
plt.subplot(121, polar=True)
plt.plot(theta, 1.6*np.ones_like(theta), linewidth=2) #绘制同心圆
plt.plot(theta, 2*np.ones_like(theta), linewidth=2) #绘制同心圆
plt.plot(theta, theta/3, "--", linewidth=2)


2.      三维绘图

1)       描述:
绘制向量函数r(t)=(sint,cost,t)的图,即向量r的坐标x,y,z都是t的函数,分别是x(t)=sint, y(t)=cost, z(t)=t。可将函数视为“大黄蜂”的飞行曲线,即t时刻,它在空间中的位置是(x,y,z),以及它的导数(飞行速度)x’(t)=cost, y’(t)=-sint,z=1,即r’(t)=(cost,-sint,1)

2)       程序

[python]  view plain  copy
  1. import numpy as np  
  2. import matplotlib.pyplot as plt  
  3. from mpl_toolkits.mplot3d import Axes3D  
  4.   
  5. fig = plt.figure(1)  
  6. ax = fig.add_subplot(1,1,1, projection='3d'# 指定三维空间做图  
  7.   
  8. t = np.linspace(04200)  # 在0到4之间,均匀产生200点的数组  
  9. theta = t * 2 * np.pi # 角度  
  10.   
  11. # r(t)=(sint,cost,t)  
  12. z = t   
  13. x = np.sin(theta)  #如果*t,就是螺旋
  14. y = np.cos(theta)  #如果*t,就是螺旋
  15. ax.plot(x, y, z, label='r(t)')  
  16.   
  17. # r’(t)  
  18. z = 1   
  19. x = np.cos(theta)  
  20. y = -np.sin(theta)  
  21. ax.plot(x, y, z, label='r\'(t)')  
  22.   
  23. ax.legend()  
  24. plt.show()  

3)       运行结果

3.      三维曲面

1)       描述
画曲面 z = x^2 +y^2

2)       程序 

[python]  view plain  copy
  1. from matplotlib import pyplot as plt  
  2. import numpy as np  
  3. from mpl_toolkits.mplot3d import Axes3D  
  4.   
  5. fig = plt.figure()  
  6. ax = Axes3D(fig)  
  7. X = np.arange(-220.1)  
  8. Y = np.arange(-220.1)  
  9. X, Y = np.meshgrid(X, Y)  
  10. Z = X**2 + Y**2  
  11.   
  12. ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')  
  13. plt.show()  
 3)       运行结果


你可能感兴趣的:(python)