上QQ阅读APP看书,第一时间看更新
2.5 用Matplotlib绘图
按照先前的承诺,最后向你展示如何使用Matplotlib“从头开始”编写本章中使用的绘图函数。用pip安装Matplotlib后,就可以导入它(以及它的一些子模块)了。
import matplotlib
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
Polygon
、Points
、Arrow
和Segment
类并无特别之处,只是保存了为其构造函数传递的数据。例如,Points
类只包含一个构造函数,它接收并存储一个向量列表和一个color
关键字参数。
class Points():
def __init__(self, vectors, color=black):
self.vectors = list(vectors)
self.color = color
draw
函数首先计算出图形的大小,然后逐一绘制传给它的每个对象。例如,要在Points
对象所代表的平面上画点,draw
函数会使用Matplotlib的散点绘制功能。
def draw(*objects, ...
# ... ←---- 这里省略了一些初始化设置
for object in objects: ←---- 遍历传入的对象
# ...
elif type(object) == Points: ←---- 如果当前对象是Points类的实例,则使用Matplotlib的散点函数为其包含的所有向量绘制对应的点
xs = [v[0] for v in object.vectors]
ys = [v[1] for v in object.vectors]
plt.scatter(xs, ys, color=object.color)
# ...
箭头、线段和多边形的处理方式大致相同,使用不同的Matplotlib函数绘制几何图像。可以在源代码文件vector/drawing.py中找到所有这些函数的实现。本书将全程使用Matplotlib来绘制数据和数学函数,在使用过程中,我会定期帮你复习它的功能。
现在你已经掌握了二维向量的相关知识,可以探索更高的维度了。有了第三个维度,就可以完整描述我们生活的世界了。在下一章中,你将学习如何用代码对三维对象进行建模。