打造桌子图案
通过一个简易桌子绘制了解,绘制的基本流程和绘图函数的基本使用方法。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 绘制三维饭桌
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 桌面坐标和高度
x = np.linspace(0, 1, 20)
y = np.linspace(0, 1, 20)
X, Y = np.meshgrid(x, y)
Z = 0.05 + 0.05 * np.sin(2 * np.pi * X) * np.sin(2 * np.pi * Y)
# 绘制桌面
ax.plot_surface(X, Y, Z, alpha=0.7, color='red')
# 桌腿坐标和高度
leg_height = 0.5
leg1 = [0.2, 0.2, leg_height]
leg2 = [0.2, 0.8, leg_height]
leg3 = [0.8, 0.2, leg_height]
leg4 = [0.8, 0.8, leg_height]
# 绘制桌腿
for leg in [leg1, leg2, leg3, leg4]:
x = [leg[0], leg[0]]
y = [leg[1], leg[1]]
z = [0, leg[2]]
ax.plot(x, y, z, color='saddlebrown', linewidth=4)
# 设置X、Y、Z轴范围
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])
ax.set_zlim([0, 0.6])
# 隐藏X、Y、Z轴刻度和边框
ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])
ax.w_xaxis.line.set_color("white")
ax.w_yaxis.line.set_color("white")
ax.w_zaxis.line.set_color("white")
# 显示图像
plt.show()
桌子面保留顶部去掉底部
1、提升桌腿到0.8,通过X,Y,Z把桌面绘制好。
2、桌面的透明度,alpha控制
3、桌面的上下移动可以通过在Z+leg_height控制
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 绘制三维饭桌
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 桌面坐标和高度
x = np.linspace(0, 1, 20)
y = np.linspace(0, 1, 20)
X, Y = np.meshgrid(x, y)
Z = 0.05 + 0.05 * np.sin(2 * np.pi * X) * np.sin(2 * np.pi * Y)
# 桌腿坐标和高度
leg_height = 0.8
leg1 = [0.2, 0.2, leg_height]
leg2 = [0.2, 0.8, leg_height]
leg3 = [0.8, 0.2, leg_height]
leg4 = [0.8, 0.8, leg_height]
# 绘制桌腿
for leg in [leg1, leg2, leg3, leg4]:
x = [leg[0], leg[0]]
y = [leg[1], leg[1]]
z = [0, leg[2]]
ax.plot(x, y, z, color='saddlebrown', linewidth=4)
# 绘制桌面上方的桌面
ax.plot_surface(X, Y, Z+leg_height, alpha=0.9, color='red')
# 绘制底部的桌面
#ax.plot_surface(X, Y, Z, alpha=0.7, color='red')
# 设置X、Y、Z轴范围
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])
ax.set_zlim([0, 1])
# 隐藏X、Y、Z轴刻度和边框
ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])
ax.w_xaxis.line.set_color("white")
ax.w_yaxis.line.set_color("white")
ax.w_zaxis.line.set_color("white")
# 显示图像
plt.show()