今天心血来潮,想搞个“数学农场”的小项目。就是想把一些数学概念用更直观的方式展现出来,也算是我自己学习过程中的一个小实践。
动手前的瞎琢磨
我脑子里想的是,要不就用个什么工具,能直接画图的那种?后来又觉得,要不干脆用代码来生成?这样感觉更“程序员”一点,哈哈。决定用 Python 试试,毕竟这玩意儿我用得还算顺手。
开始折腾
我得把基本的框架搭起来。我用个叫 matplotlib
的库,这东西画图挺方便的。先来个最简单的,画个正方形试试水:
import * as plt
import * as patches
fig, ax = *()
# 创建一个正方形
square = *((0.2, 0.2), 0.6, 0.6, linewidth=1, edgecolor='r', facecolor='none')
# 把正方形加到图里
*_patch(square)
跑起来一看,还真出来!一个红框框的正方形,虽然简陋点,但好歹是迈出第一步。
加点料
光秃秃的一个正方形肯定不行,得再加点东西。我想想,要不就在里面画点格格?这样就能表示面积。于是我又加点代码:
# 省略前面的代码...
# 画格子
for i in range(1, 6):
*(y=0.2 + i 0.1, color='gray', linestyle='--', linewidth=0.5)
*(x=0.2 + i 0.1, color='gray', linestyle='--', linewidth=0.5)
# 省略后面的代码...
这下子,正方形里面就被分成25个小格子,看起来有点农场的样子!
再来点花样
光是格子也太单调,我琢磨着,要不给每个格子都标上数字?这样就能表示坐标。我又是一顿操作:
# 省略前面的代码...
# 标数字
for i in range(5):
for j in range(5):
*(0.22 + j 0.1, 0.78 - i 0.1, str(i 5 + j + 1), fontsize=8)
# 省略后面的代码...
这下好,每个格子都有自己的编号,从1到25,整整齐齐。
遇到的坑
- 坐标系问题:一开始画格子的时候,老是画不对位置,后来才发现是坐标系没搞清楚。
matplotlib
的坐标系原点在左下角,而且横轴是 x,纵轴是 y,这个跟平时数学课上学的不太一样,得注意一下。 - 数字位置:给格子标数字的时候,也费不少劲。一开始数字都挤在一起,根本看不清。后来反复调整 里面的参数,才把数字放到合适的位置。
小结
折腾一下午,总算是把这个“数学农场”的雏形给弄出来。虽然功能还很简单,但看着自己画出来的东西,还是挺有成就感的。我还打算继续完善它,比如加上更多的形状、颜色,甚至可以考虑做点交互,让用户可以自己“种地”!
今天的分享就到这里,希望大家也能从我的实践中得到一点启发。下次再见!