【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对象的主要参数:
- xy:矩形的起始点,也就是左下角的点
- height:矩形的高
- width:矩形的宽,高和宽设置一样就是正方形
- angle:沿着起始点,逆时针旋转的角度
- 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对象的主要参数:
- xy:多边形各个顶点的列表
- 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对象的主要参数:
- xy:正多边形的中心点坐标
- radius:正多边形的外接圆半径
- resolution:正多边形的边数
- 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对象的主要参数:
- xy:圆心坐标
- radius:圆的半径
- color:圆的颜色,默认蓝色
Ellipse对象的主要参数:
- xy:椭圆心坐标
- height:椭圆的高度
- width:椭圆的宽度
- 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对象的主要参数:
- xy:圆弧的圆心坐标
- width:圆弧的宽度
- height:圆弧的高度
- angle:圆弧朝向的角度,逆时针旋转
- theta1:圆弧开始的角度,逆时针旋转
- theta2:圆弧结束的角度,逆时针旋转
- linewidth:圆弧的粗细
- color:圆弧的颜色,默认蓝色
PS. width和height相等时,圆弧相当于是圆的一段,不相等时,圆弧相当于是椭圆的一段。
圆弧开始的角度其实就是 angle+theta1,结束的角度是angle+theta2。
Wedge对象的主要参数:
- xy:扇形的圆心坐标
- r:扇形的半径
- theta1:扇形开始的角度,逆时针旋转
- theta2:扇形结束的角度,逆时针旋转
- 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对象的主要参数:
- x:箭头的起点
X坐标 - y:箭头的起点
Y坐标 - dx:箭头的终点
X坐标偏移起点X坐标的值 - dy:箭头的终点
Y坐标偏移起点Y坐标的值 - width:箭头的宽度
- color:箭头的颜色,默认蓝色
PS. 其实就是起点坐标(x, y),终点坐标(x+dx, y+dy)。
代码运行效果:
5. 总结
几何图形是matplotlib最基本的能力,复杂花哨的分析图表归根结底都是这些基本的几何图形。
除了本篇介绍的这些,完整的patches可以参考官方文档:https://matplotlib.org/stable/api/patches_api.html

【matplotlib基础】--几何图形的更多相关文章
- 数据分析与展示——Matplotlib基础绘图函数示例
Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...
- Matplotlib基础图形之散点图
Matplotlib基础图形之散点图 散点图特点: 1.散点图显示两组数据的值,每个点的坐标位置由变量的值决定 2.由一组不连续的点组成,用于观察两种变量的相关性(正相关,负相关,不相关) 3.例如: ...
- Matplotlib基础知识
Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y轴刻度标签 ...
- matplotlib基础
Matplotlib 基础 注:本文中的程序都默认引入了numpy库和matplotlib库,并且分别简写为np与plt:如果读者不知道怎么使用numpy库,可以移步到这一博客上进行简单的学习 一.简 ...
- Matplotlib基础使用
matplotlib 一.Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis 水平和垂直的轴线 x轴和y轴刻度 tick 刻度标示坐标轴的分隔,包括最小刻度 ...
- 模块简介与matplotlib基础
模块简介与matplotlib基础 1.基本概念 1.1数据分析 对已知的数据进行分析,提取出一些有价值的信息. 1.2数据挖掘 对大量的数据进行分析与挖掘,得到一些未知的,有价值的信息. 1.3数据 ...
- [笔记]SciPy、Matplotlib基础操作
NumPy.SciPy.Matplotlib,Python下机器学习三大利器.上一篇讲了NumPy基础操作,这节讲讲SciPy和Matplotlib.目前接触到的东西不多,以后再遇到些比较常用的再更新 ...
- 第二周 数据分析之展示 Matplotlib基础绘图函数实例
Pyplot基础图表函数 Pyplot饼图的绘制: Pyplot直方图的绘制: Pyplot极坐标图的绘制: Pyplot散点图的绘制: 单元小结: import numpy as np import ...
- python数据图形化—— matplotlib 基础应用
matplotlib是python中常用的数据图形化工具,用法跟matlab有点相似.调用简单,功能强大.在Windows下可以通过命令行 pip install matplotlib 来进行安装. ...
- python画图matplotlib基础笔记
numpy~~基础计算库,多维数组处理 scipy~~基于numpy,用于数值计算等等,默认调用intel mkl(高度优化的数学库) pandas~~强大的数据框,基于numpy matplotli ...
随机推荐
- 使用 ChatGPT 的 7 个技巧 | Prompt Engineering 学习笔记
概述 前段时间在 DeepLearning 学了一门大火的 Prompt 的课程,吴恩达本人授课,讲的通俗易懂,感觉受益匪浅,因此在这里总结分享一下我的学习笔记. 为什么要学习 Prompt ? 因为 ...
- 可能是最简单最通透的Comparable和Comparator接口返回值理解
先说 Comparator 接口,这个理解了,下一个就理解了 一.Comparator 的用法(暂不考虑0,因为0不处理) 返回-1,1交换不交换位置,如果撇开比较器的两个参数和jdk默认顺序来说,存 ...
- 解决github无法打开问题
在国内访问国外服务器(如github)会有卡顿.无法加载等问题,提供两种解决方案: 1.查看github的IP地址并修改Hosts windows键+R,打开cmd(或windows键+X,打开Win ...
- Spring 中 Bean 的配置细节
前言 大家好,我是 god23bin,今天继续说 Spring 的内容,关于 Spring 中 Bean 的配置的,通过上一篇文章的学习,我们知道了 Spring 中的依赖注入,其中有两种主要的方式, ...
- requests的基础使用
爬虫介绍 # 爬虫:又称网络蜘蛛,spider,一堆程序,从互联网中抓取数据---->数据清洗---->入库 # 爬虫需要掌握的知识 -抓取数据:发送网络请求(http),获得响应(htt ...
- CentOS 8搭建Kubernetes-k8s集群-1.18.5
目录 环境配置 服务器信息 软件版本 环境正确性 端口正常开放 kube-master节点端口 kube-node节点端口 配置主机互信 配置hosts映射 配置ssh密钥 禁用swap 关闭SELi ...
- 【Shell】ps 命令
ps 命令 Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器. 1. ps 常用的命令 ps -aux #显示所有进程信息 ...
- 【Kubernetes】yaml文件编写 -- 持续更新
K8S通过yaml格式的声明式API与资源对象交互 API版本由apiVersion字段指定,API对象类型由kind字段指定 除此之外,每个API对象有三大类属性: metadata:元数据 spe ...
- C# Task 实现任务超时取消、超时取消然后重试 超过重试最大次数就结束。
任务超时取消 示例 public static async Task TimeoutCancelTask() { CancellationTokenSource cts = new Cancellat ...
- 介绍Centos7启用过程中用到的rpm软件包、及其作用
序号 包名 作用 1 udev 系统设备管理器,用于管理设备驱动程序和设备的元数据. 2 lvm2 Logical Volume Manager 2(LVM2)是一个用于管理和分配存储设备的工具,允许 ...