使用Python和matplotlib库绘制橡树
- 像素风格的橡树(树干和四层树叶)
- 天空背景和地面
- 远处的山丘
- 太阳
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectangle, Circle, Polygonmatplotlib.pyplot: 用于创建图形和绘图numpy: 用于数学运算和随机选择matplotlib.patches: 提供各种形状的绘制工具
这是主要的绘图函数,负责创建整个场景。
fig, ax = plt.subplots(figsize=(8, 10))
ax.set_aspect('equal')
ax.set_facecolor('#87CEEB')figsize=(8, 10): 设置图形大小为8x10英寸set_aspect('equal'): 保持x轴和y轴比例相等set_facecolor('#87CEEB'): 设置背景颜色为天空蓝
for x in range(20):
for y in range(3):
if (x + y) % 2 == 0:
color = '#8B4513'
else:
color = '#A0522D'
rect = Rectangle((x, y), 1, 1, facecolor=color, edgecolor='black', linewidth=0.5)
ax.add_patch(rect)- 使用双循环创建20x3的地面网格
- 棋盘格效果:通过
(x + y) % 2判断使用哪种棕色 Rectangle((x, y), 1, 1): 创建1x1的矩形方块
trunk_pixels = [
(9, 3), (9, 4), (9, 5), (9, 6), (9, 7), (9, 8),
(10, 3), (10, 4), (10, 5), (10, 6), (10, 7), (10, 8)
]- 树干由12个方块组成,位置在x=9-10,y=3-8
- 使用深棕色
#8B4513模拟木头颜色
树叶分为四层,从下到上宽度逐渐变窄:
# 最底层树叶(宽度最宽)
(5, 7), (6, 7), (7, 7), (8, 7), (9, 7), (10, 7), (11, 7), (12, 7), (13, 7), (14, 7),
(4, 8), (5, 8), (6, 8), (7, 8), (8, 8), (9, 8), (10, 8), (11, 8), (12, 8), (13, 8), (14, 8), (15, 8),
(5, 9), (6, 9), (7, 9), (8, 9), (9, 9), (10, 9), (11, 9), (12, 9), (13, 9), (14, 9),
(6, 10), (7, 10), (8, 10), (9, 10), (10, 10), (11, 10), (12, 10), (13, 10),- 宽度最宽:从x=4到x=15
- 树干在中间位置可见
- 宽度适中,比最底层窄
- 宽度较窄
- 宽度最窄
colors = ['#228B22', '#32CD32', '#006400']
color = np.random.choice(colors)mountains = [
# 左侧远处的山
Polygon([(1, 3), (3, 6), (5, 3)], facecolor='#696969', edgecolor='#2F4F4F', linewidth=1),
# 右侧远处的山
Polygon([(14, 3), (16, 5), (18, 3)], facecolor='#696969', edgecolor='#2F4F4F', linewidth=1),
# 更远处的山(更小)
Polygon([(0, 3), (1, 4), (2, 3)], facecolor='#808080', edgecolor='#2F4F4F', linewidth=1),
Polygon([(18, 3), (19, 4), (20, 3)], facecolor='#808080', edgecolor='#2F4F4F', linewidth=1),
]- 使用
Polygon类创建三角形山丘
sun = Circle((17, 17), 2, facecolor='#FFD700', edgecolor='#FFA500', linewidth=2)- 位置在右上角(x=17, y=17)
- 使用金色
#FFD700和橙色边框#FFA500
ax.set_xlim(0, 20)
ax.set_ylim(0, 22)
ax.set_xticks([])
ax.set_yticks([])
plt.title('像素风格橡树', fontsize=16, fontfamily='SimHei')
plt.tight_layout()
plt.show()set_xlim和set_ylim: 设置坐标轴范围set_xticks([])和set_yticks([]): 隐藏坐标轴刻度title: 设置图形标题tight_layout(): 自动调整布局show(): 显示图形
if __name__ == "__main__":
print("正在绘制像素风格橡树...")
draw_pixel_style_oak_tree()- 确保安装了必要的库:
pip install matplotlib numpy- 运行程序:
python minecraft_oak_tree.py- 天空蓝:
#87CEEB - 树干棕:
#8B4513 - 地面棕:
#8B4513,#A0522D - 树叶绿:
#228B22,#32CD32,#006400 - 太阳金:
#FFD700,#FFA500 - 山丘灰:
#696969,#808080