使用matplotlib库打造桌子图探究

打造桌子图案
通过一个简易桌子绘制了解,绘制的基本流程和绘图函数的基本使用方法。
在这里插入图片描述

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值