gpt4 book ai didi

【matplotlib基础】--几何图形

转载 作者:我是一只小鸟 更新时间:2023-09-19 15:02:41 36 4
gpt4 key购买 nike

除了绘制各类分析图形(比如柱状图,折线图,饼图等等)以外, 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 :矩形的颜色,默认蓝色

代码 运行效果 :

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 :多边形的颜色,默认蓝色

代码 运行效果 :

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 :正多边形的颜色,默认蓝色

代码 运行效果 :

2. 圆形类

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

2.1. 圆和椭圆

绘制圆和椭圆分别用 Circle 和 Ellipse 对象.

                        
                          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. **当椭圆的 height 和 width 设置一样时,椭圆就是圆了.

代码 运行效果 :

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. width 和 height 相等时,圆弧相当于是 圆 的一段,不相等时,圆弧相当于是 椭圆 的一段。 圆弧开始的角度其实就是 angle+theta1 ,结束的角度是 angle+theta2 .

Wedge 对象的 主要参数 :

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

代码 运行效果 :(本来想画个鱼钩钓鱼的抽象效果的,:)) 。

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) .

代码 运行效果 :

5. 总结

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

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

image.png

最后此篇关于【matplotlib基础】--几何图形的文章就讲到这里了,如果你想了解更多关于【matplotlib基础】--几何图形的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com