Python三维绘图
PS:是从网上各个帖子中学习的代码,因此代码的格式以及内容有粘贴网上其他大神的代码,如有侵权请告知删除
代码相关函数说明:
- np.linspace:得到等差数列。举例:Value = np.linspace(0, 8 , 100),获取0到8的100个等差的数值
- np.pi:代表Π
- np.random.randint:获取随机数。举例np.random.randint(0, 8, (4, 8), np.int32),获取0到8的共4行8列的数值
- np.meshgrid:通过笛卡尔乘积,获得网格点
- a2 :求a的平方(a3 :求a的立方)
- np.sqrt:求平方根
- np.arange:取指定步长的值。举例np.arange(0, 3, 0.1),获取0到3步长为0.1的值
- fig.colorbar(surface):根据surface表面图显示颜色条
- plt.xlim:设定X轴长,Y轴同理
10.ax.text:给坐标系中某点写文本。举例ax.text(x, y, z, ”test"),向坐标(x,y,z)点写入文本“test"。
1 线绘制
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection='3d')
Value = np.linspace(0, 8 * np.pi, 100)
z = np.linspace(0, 4, 100)
x = z * np.sin(Value)
y = z * np.cos(Value)
ax.plot(x, y, z, label='Test')
ax.legend()
plt.show()

2 点绘制
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(0, 8 * np.pi, 100)
z = np.linspace(0, 4, 100)
x = z * np.sin(theta)
y = z * np.cos(theta)
ax.scatter(x, y, z, c='g', marker='o')
ax.legend()
plt.show()

3 线框绘制
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection='3d')
z = np.random.randint(0, 8, (4, 8), np.int32)
x = np.random.randint(8, 16, (4, 8), np.int32)
y = np.random.randint(16, 24, (4, 8), np.int32)
ax.plot_wireframe(x, y, z, rstride=5, cstride=5)
ax.legend()
plt.show()

4 表面绘制
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
fig = plt.figure()
ax = fig.gca(projection='3d')
x = np.arange(8, 16, 0.5)
y = np.arange(8, 16, 0.5)
x, y = np.meshgrid(x, y)
r = np.sqrt(x**2 + y**2)
z = np.sin(r)
surface = ax.plot_surface(x, y, z, cmap=cm.coolwarm, linewidth=0, antialiased=False)
fig.colorbar(surface)
ax.legend()
plt.show()

5 柱状绘制
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection='3d')
col = ['r', 'g', 'y', 'b']
x = [[1], [2], [3], [4]]
xs = [1, 2, 3, 4]
y = np.arange(1, 5, 1)
z = np.arange(1, 5, 1)
for i in range(0, 4):
ax.bar(x[i], y[i], z[i], zdir='y', color=col[i])#zdir指定宽度沿着哪个坐标系
Text = col[i]
ax.text(xs[i], y[i], z[i], Text)
plt.xlim(0, 6)
plt.ylim(0, 6)
plt.show()

版权声明:本文为kaikai45原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。