返回介绍

数学基础

统计学习

深度学习

工具

Scala

五、 Path

发布于 2023-07-17 23:38:23 字数 3867 浏览 0 评论 0 收藏 0

  1. matplotlib.patch对象底层的对象就是Path。它的基本用法如下:

    
    
    xxxxxxxxxx
    import matplotlib.pyplot as plt from matplotlib.path import Path import matplotlib.patches as patches verts = [ (0., 0.), # left, bottom (0., 1.), # left, top (1., 1.), # right, top (1., 0.), # right, bottom (0., 0.), # ignored ] codes = [Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.CLOSEPOLY, ] path = Path(verts, codes) fig = plt.figure() ax = fig.add_subplot(111) patch = patches.PathPatch(path) ax.add_patch(patch) ax.set_xlim(-2,2) ax.set_ylim(-2,2) plt.show()

    `Path`

  2. PATH对象的创建通过matplotlib.path.Path(verts,codes)创建,其中:

    • vertsPATH的顶点。这些顶点必须构成一个封闭曲线。其中每个顶点必须指定x坐标和y坐标。

    • codes:指示如何使用这些PATH顶点。它与verts关系是一一对应的。有如下指令:

      • Path.STOP:结束path的标记
      • Path.MOVETO:画笔提起并移动到指定的顶点
      • Path.LINETO:画笔画直线,从current position到指定的顶点
      • Path.CURVE3:画笔画二阶贝塞尔曲线,从current position到指定的end point, 其中还有一个参数是指定的control point
      • Path.CURVE4:画笔画三阶贝塞尔曲线,从current position到指定的end point, 其中还有两个参数是指定的control points
      • Path.CLOSEPOLY:指定的point参数被忽略。该指令画一条线段, 从current pointstart point

    可以通过matplotlib.patches.PathPatch(path)来构建一个PathPatch对象,然后通过Axes.add_patch(patch)Axes添加PathPatch对象.这样就添加了Path到图表中。

    贝塞尔曲线

  3. matplotlib中所有简单的patch primitive,如RectangleCirclePolygon等等,都是由简单的Path来实现的。而创建大量的primitive的函数如hist()bar()(他们创建了大量的Rectanle)可以使用一个compound path来高效地实现。

    但是实际上bar()创建的是一系列的Rectangle,而没有用到compound path,这是由于历史原因,是历史遗留问题。(bar()函数先于Coupound Path出现)

    下面是一个Compound Path的例子:

    
    
    xxxxxxxxxx
    ... verts = np.zeros((nverts, 2)) # nverts为顶点的个数加1(一个终止符) codes = np.ones(nverts, int) * Path.LINETO ## 设置 codes :codes分成5个一组, ## 每一组以Path.MOVETO开始,后面是3个Path.LINETO,最后是Path.CLOSEPOLY codes[0::5] = Path.MOVETO codes[4::5] = Path.CLOSEPOLY ## 设置顶点 verts ## ... ## 创建 Path 、PathPatch并添加 ## barpath = Path(verts, codes) patch = patches.PathPatch(barpath, facecolor='green',edgecolor='yellow', alpha=0.5) fig = plt.figure() ax = fig.add_subplot(111) ax.add_patch(patch) ax.show()

    在创建Axes或者SubPlot时,可以给构造函数提供一个axisbg参数来指定背景色

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文