【matplotlib基础】--几何图形

这篇具有很好参考价值的文章主要介绍了【matplotlib基础】--几何图形。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

除了绘制各类分析图形(比如柱状图,折线图,饼图等等)以外,matplotlib 也可以在画布上任意绘制各类几何图形。
这对于计算机图形学、几何算法和计算机辅助设计等领域非常重要。

matplitlib 中的 patches 类提供了丰富的几何对象,
本篇抛砖引玉,介绍其中几种常用的几何图形绘制方法。

其实matplitlib封装的各种现成的图形对象(柱状图,折线图,饼图等等)本质也是基于 patches 来绘制的。

1. 多边形类

多边形可以用在地理信息图表中,用来表示地理区域的边界或地理要素的形状;
也可以用来展示数据的分布区域或边界,比如用在散点图中。

几种常用的多边形绘制方式如下:

1.1. 矩形

绘制矩形用Rectangle对象。

import matplotlib.pyplot as plt
import matplotlib.patches as mptch

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)

r1 = mptch.Rectangle(xy=(0.2, 0.3), 
                     height=0.5,
                     width=0.7,
                     color="lightblue")
r2 = mptch.Rectangle(xy=(0.4, 0.6),
                     height=0.3,
                     width=0.2,
                     angle=60,
                     color="lightgreen")

ax.add_patch(r1)
ax.add_patch(r2)
plt.show()

Rectangle对象的主要参数

  1. xy:矩形的起始点,也就是左下角的点
  2. height:矩形的高
  3. width:矩形的宽,高和宽设置一样就是正方形
  4. angle:沿着起始点,逆时针旋转的角度
  5. color:矩形的颜色,默认蓝色

代码运行效果
【matplotlib基础】--几何图形

1.2. 任意多边形

任意多边形比较简单,给Polygon对象传入多边形的各个顶点即可。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)

#三角形
p1 = mptch.Polygon(xy=[(0.1, 0.1), (0.4, 0.1), (0.3, 0.6)], 
                   color='lightblue')
#四边形
p2 = mptch.Polygon(xy=[(0.5, 0.5), (0.9, 0.5),  (0.9, 0.1), (0.6, 0.2)], 
                   color='lightgreen')
ax.add_patch(p1)
ax.add_patch(p2)

plt.show()

Polygon对象的主要参数

  1. xy:多边形各个顶点的列表
  2. color:多边形的颜色,默认蓝色

代码运行效果
【matplotlib基础】--几何图形

1.3. 正多边形

虽然用Polygon对象也可以绘制正多边形,但是需要计算各个顶点的坐标位置,很麻烦。
matplotlib提供了专门绘制正多边形的对象CirclePolygon

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)

p1 = mptch.CirclePolygon(xy=(0.3, 0.3), 
                         radius=0.2, 
                         resolution=6, 
                         color='lightgreen')
p2 = mptch.CirclePolygon(xy=(0.6, 0.6), 
                         radius=0.2, 
                         resolution=8, 
                         color='lightblue')
ax.add_patch(p1)
ax.add_patch(p2)

plt.show()

CirclePolygon对象的主要参数

  1. xy:正多边形的中心点坐标
  2. radius:正多边形的外接圆半径
  3. resolution:正多边形的边数
  4. color:正多边形的颜色,默认蓝色

代码运行效果
【matplotlib基础】--几何图形

2. 圆形类

圆形类也是使用比较多的形状。

2.1. 圆和椭圆

绘制圆和椭圆分别用CircleEllipse对象。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)

c = mptch.Circle(xy=(0.5, 0.5), 
                 radius=0.4, 
                 color="lightblue")
e = mptch.Ellipse(xy=(0.5, 0.5), 
                  height=0.3, 
                  width=0.4, 
                  color="lightgreen")

ax.add_patch(c)
ax.add_patch(e)
plt.show()

Circle对象的主要参数

  1. xy:圆心坐标
  2. radius:圆的半径
  3. color:圆的颜色,默认蓝色

Ellipse对象的主要参数

  1. xy:椭圆心坐标
  2. height:椭圆的高度
  3. width:椭圆的宽度
  4. color:椭圆的颜色,默认蓝色

**PS. **当椭圆的heightwidth设置一样时,椭圆就是圆了。

代码运行效果
【matplotlib基础】--几何图形

3. 圆弧和扇形

除了完整的圆,也可以绘制弧形(Arc对象)和扇形(Wedge对象)。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)

#圆弧
a = mptch.Arc(xy=(0.4, 0.7), 
              width=0.5, height=0.5, 
              angle=270, 
              theta1=0, theta2=120, 
              linewidth=10, 
              color="lightblue")

#扇形
w = mptch.Wedge(center=(0.3, 0.5), 
                r=0.2, 
                theta1=30, theta2=330, 
                color="lightgreen")

ax.add_patch(a)
ax.add_patch(w)
plt.show()

Arc对象的主要参数

  1. xy:圆弧的圆心坐标
  2. width:圆弧的宽度
  3. height:圆弧的高度
  4. angle:圆弧朝向的角度,逆时针旋转
  5. theta1:圆弧开始的角度,逆时针旋转
  6. theta2:圆弧结束的角度,逆时针旋转
  7. linewidth:圆弧的粗细
  8. color:圆弧的颜色,默认蓝色

PS. widthheight相等时,圆弧相当于是的一段,不相等时,圆弧相当于是椭圆的一段。
圆弧开始的角度其实就是 angle+theta1,结束的角度是angle+theta2

Wedge对象的主要参数

  1. xy:扇形的圆心坐标
  2. r:扇形的半径
  3. theta1:扇形开始的角度,逆时针旋转
  4. theta2:扇形结束的角度,逆时针旋转
  5. color:扇形的颜色,默认蓝色

代码运行效果:(本来想画个鱼钩钓鱼的抽象效果的,:))
【matplotlib基础】--几何图形

4. 箭头

箭头也是一种比较常用的图形,可用来标注和指示数据的方向或关联性,比如增长或下降趋势;
还可以用来表示数据流向或关系。

matplotlib中用Arrow对象来绘制箭头。

fig = plt.figure(figsize=[6, 6])
ax = fig.add_subplot(111)

x, y, dx, dy  = 0.1, 0.2, 0.2, 0.2
a1 = mptch.Arrow(x=x, y=y, 
                 dx=dx, dy=dy, 
                 width=0.2, color="lightblue")
a2 = mptch.Arrow(x=x+dx, y=y+dy, 
                 dx=dx, dy=dy, 
                 width=0.4, color="lightgreen")

ax.add_patch(a1)
ax.add_patch(a2)
plt.show()

Arrow对象的主要参数

  1. x:箭头的起点X坐标
  2. y:箭头的起点Y坐标
  3. dx:箭头的终点X坐标偏移起点X坐标的值
  4. dy:箭头的终点Y坐标偏移起点Y坐标的值
  5. width:箭头的宽度
  6. color:箭头的颜色,默认蓝色

PS. 其实就是起点坐标(x, y)终点坐标(x+dx, y+dy)

代码运行效果
【matplotlib基础】--几何图形

5. 总结

几何图形是matplotlib最基本的能力,复杂花哨的分析图表归根结底都是这些基本的几何图形。

除了本篇介绍的这些,完整的patches可以参考官方文档:https://matplotlib.org/stable/api/patches_api.html

【matplotlib基础】--几何图形文章来源地址https://www.toymoban.com/news/detail-712173.html

到了这里,关于【matplotlib基础】--几何图形的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机图形学:二维图形的几何变换(算法原理及代码实现)

    对于一个二维图形作平移、旋转、放缩变换,可以转换为在二维坐标系中图形的所有点分别可以对应到在x,y轴方向分别平移tx,ty(平移)、绕一点旋转固定的角(旋转)、在x,y轴方向分别放缩sx,sy倍。 对于变换的原理,只需要将原图形的点通过极坐标或者相加、相乘,再

    2024年02月11日
    浏览(51)
  • 图形几何学——圆形:圆弧与曲率

    A、B、C分别是参考线的某三个连续的离散点,abc分别是其对边。根据三角形外接圆相关性质,通过作三条边的中垂线的交点可以求得三角形的外接圆心。连接CO并延长交圆周于点D,由于 近似认为 ∣ P 1 ⃗ ∣ = ∣ P 2 P 3 ⃗ ∣ = d s |vec{P_1}| = |vec{P_2P_3}| = ds ∣ P 1 ​ ​ ∣ = ∣

    2024年04月27日
    浏览(76)
  • Procedural Mesh: 创建复杂的3D几何图形

    Procedural Mesh 是一个用于创建复杂3D几何图形的开源库,由 Morten Nobel 开发并维护。它允许开发者通过程序化的方式生成各种形状和结构,无需手动设计每个顶点和面。 Procedural Mesh 提供了一系列函数和工具,可以帮助开发者轻松地生成自定义的3D网格。这些功能包括: 基础形状

    2024年03月15日
    浏览(42)
  • 几何引擎 & 约束求解器 & 3D仿真物理引擎 & 图形引擎

    四大技术图谱就像四座护法金刚,形成了深不可测的技术鸿沟。这对于任何一个工业软件企业,十年发展的沉淀,那还只是开始。这条路,太漫长了。 Software Vendor Domain 3D-kernel 4MCAD IntelliCAD 4M S.A., Greece CAD, AEC Open CASCADE Technology Adams MSC Software, USA CAE Parasolid ADEM ADEM, Russia-Israel

    2024年02月08日
    浏览(39)
  • 计算机视觉 图像形成 几何图形和变换 3D到2D投影

            现在我们知道如何表示2D和3D几何图元以及如何在空间上转换它们,我们需要指定如何将 3D图元投影到图像平面上。 我们可以使用线性3D到2D投影矩阵来做到这一点。最简单的模型是正交法,它不需要除法就可以得到最终的(不均匀的)结果。更常用的模型是透视,

    2023年04月08日
    浏览(64)
  • 图形编辑器开发:一些会用到的简单几何算法

    大家好,我是前端西瓜哥。 开发图形编辑器,你会经常要解决一些算法问题。本文盘点一些我开发图形编辑器时遇到的简单几何算法问题。 判断两个矩形是否发生碰撞(或者说相交),即两个矩形有重合的区域。 常见使用场景: 使用选择工具 框选 图形(框选策略除了相交

    2024年02月16日
    浏览(52)
  • CG3-v2.0-图形几何变换

    (1) 理解几何变换基本原理, 掌握平移、旋转、缩放变换的方法; (2) 根据平移算法原理补全translation、scale、rotation_x、rotation_y和rotation_z函数; (3) 根据几何变换基本原理,将main函数中的translation、scale、rotation_z参数补充完整。

    2024年02月08日
    浏览(51)
  • Qt+opencv 鼠标画线实现几何图形识别并动态创建

    使用Qt + OpenCV实现,通过鼠标画线绘制几何图形,然后通过opencv进行图形轮廓识别,返回图形顶点,然后创建对应的几何图形添加到场景中。绘制使用QGraphics体系完成。 看效果图: 本文demo在这里 点击下载 环境: Qt5.15.2 + vs2019 64bit 支持图形:直线、圆、椭圆、矩形、三角形。

    2024年02月10日
    浏览(74)
  • 基于EasyX学习图形学中的三维几何变换【全】

    本文开始学习几何变换中的三维变换,对于各种变换的定义方法基本和二维变换一样,在此我就不过多赘述了。 三维变换矩阵 由于二维变换矩阵为三阶矩阵,所以三维变换矩阵为四阶矩阵 以下例子均在此正方体基础上 坐标表示 矩阵表示 变换矩阵 核心代码 效果展示 坐标表

    2024年02月09日
    浏览(48)
  • 深度学习·理论篇(2023版)·第002篇深度学习和计算机视觉中的基础数学知识01:线性变换的定义+基于角度的线性变换案例(坐标变换)+点积和投影+矩阵乘法的几何意义+图形化精讲

    💕 恭喜本博客浏览量达到两百万,CSDN内容合伙人,CSDN人工智能领域实力新星~ 🧡 本文章为2021版本迭代更新版本,在结合有效知识的基础上对文章进行合理的增加,使得整个文章时刻顺应时代需要 🧡 本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理

    2023年04月08日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包