- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
除了绘制各类分析图形(比如柱状图,折线图,饼图等等)以外, matplotlib 也可以在画布上任意绘制各类几何图形。 这对于计算机图形学、几何算法和计算机辅助设计等领域非常重要.
matplitlib 中的 patches 类提供了丰富的几何对象, 本篇抛砖引玉,介绍其中几种常用的几何图形绘制方法.
其实 matplitlib 封装的各种现成的图形对象(柱状图,折线图,饼图等等)本质也是基于 patches 来绘制的.
多边形 可以用在地理信息图表中,用来表示地理区域的边界或地理要素的形状; 也可以用来展示数据的分布区域或边界,比如用在散点图中.
几种常用的多边形绘制方式如下:
绘制矩形用 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 对象的 主要参数 :
代码 运行效果 :
任意多边形 比较简单,给 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 对象的 主要参数 :
代码 运行效果 :
虽然用 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 对象的 主要参数 :
代码 运行效果 :
圆形类也是使用比较多的形状.
绘制圆和椭圆分别用 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 对象的 主要参数 :
Ellipse 对象的 主要参数 :
**PS. **当椭圆的 height 和 width 设置一样时,椭圆就是圆了.
代码 运行效果 :
除了完整的圆,也可以绘制弧形( 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 对象的 主要参数 :
PS. width 和 height 相等时,圆弧相当于是 圆 的一段,不相等时,圆弧相当于是 椭圆 的一段。 圆弧开始的角度其实就是 angle+theta1 ,结束的角度是 angle+theta2 .
Wedge 对象的 主要参数 :
代码 运行效果 :(本来想画个鱼钩钓鱼的抽象效果的,:)) 。
箭头也是一种比较常用的图形,可用来标注和指示数据的方向或关联性,比如增长或下降趋势; 还可以用来表示数据流向或关系.
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
坐标 Y
坐标 X
坐标偏移起点 X
坐标的值 Y
坐标偏移起点 Y
坐标的值 PS . 其实就是 起点 坐标 (x, y) , 终点 坐标 (x+dx, y+dy) .
代码 运行效果 :
几何图形是 matplotlib 最基本的能力,复杂花哨的分析图表归根结底都是这些基本的几何图形.
除了本篇介绍的这些,完整的 patches 可以参考官方文档: https://matplotlib.org/stable/api/patches_api.html 。
最后此篇关于【matplotlib基础】--几何图形的文章就讲到这里了,如果你想了解更多关于【matplotlib基础】--几何图形的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
除了绘制各类分析图形(比如柱状图,折线图,饼图等等)以外, matplotlib 也可以在画布上任意绘制各类几何图形。 这对于计算机图形学、几何算法和计算机辅助设计等领域非常重要。 m
我的问题的背景是,我有一堆几何图形(数量巨大,认为映射到更大的区域)分布在多个 wpf 几何实例中(最初它们是 PathGeometry,但为了减少内存使用量,我对它们进行了预处理并在加载期间创建 S
我正在研究一个传感器网格,它基于(目前)没有比相机更复杂的东西。将来,我希望包括对基于 Kinect 的设备以及其他传感器设备(即麦克风、 radio 接收器等)的支持,但目前,我正在努力启动它。 我
我想制作一系列具有相同颜色的 geom_bar 的图表。我更喜欢偷懒,因此我希望避免每次都指定fill="blue"。 如何根据最新版本的 ggplot2 修改 geom 的默认值或创建具有修改后默认
有没有办法使用准备好的语句将 GIS 数据插入 mysql 数据库(使用 PHP/PDO)? 这是失败的: $stmt = $sql->prepare("INSERT INTO geo SET loc
当用鼠标拖动小部件时,宽度会自由移动(带框架的小部件)。我想要实现的是让移动的小部件捕捉到某些区域,例如屏幕的其他小部件或边框。例如,Winamp 中的播放列表窗口与主窗口对齐。如何实现这种行为? 最
我需要创建一个简单的应用程序,它可以在 C# 中显示来自 Oracle Spatial 的几何图形。这些几何图形从 AutoCAD Map 3D 2010 导出到 Oracle Spatial。 我需
根据一组定义路线的坐标,我想绘制一个模拟该轨道的理论高速公路的几何图形,给定任意米宽(例如 20 米) 我不知道 GeoTools 是否提供了用这样的输入构造一个 Geometry 的工具,所以我最初
我们已经进行了开发智能手机/平板电脑应用程序(最好是 Android 应用程序)的需求可行性研究,该应用程序应该能够执行以下操作 首先,用户会使用带有摄像头的平板电脑或智能手机行走,在建筑物内部绘制整
我正在尝试使用 Three.js STLLoader 从 STL 文件读取并缓存几何图形。我使用事件循环回调来获取数据(类似于 STLLoader 示例)。我打算存储在外部变量“cgeom”中。但是,
我正在尝试使用带获取值的 ST_Makepoint 进行插入,但我遇到了 500 错误。 这是我的 php 代码: prepare("INSERT INTO table(id_a, id_b, geo
我试图让我的几何图形在 SceneKit 中看起来平坦而不平滑。正如您在图像中看到的,在 SceneKit 中,绿色球体默认具有平滑的阴影。我想要的是另一张图片中的扁平“外观”,上面写着“扁平”。 我
我似乎无法直接将 mssql 空间字段导入到 geopandas 中。我可以使用 Pymssql 将普通的 mssql 表导入 pandas,不会出现任何问题,但我无法找到将空间字段导入形状几何的方法
我目前正在将 STL 对象加载到我的 Three.js 场景中。 出于某种原因,渲染/动画需要大量 GPU 资源,从而减慢整个场景的速度,因此我一直在考虑替代方案。 由于它是一个非常简单的形状,我想我
我正在使用 QT 并尝试使用 QGraphicsView 和 QGraphicsScene 绘制图表..我不想要任何额外的依赖项,这就是我不使用 QWT 的原因。当我绘制我的数据时,此刻我使用 sce
新式 sf R 包使其非常容易处理 R中的地理数据,以及ggplot2的开发版本有一个新的geom_sf()用于绘制科幻风格地理数据的图层。 内sf处理数据的范式,是否可以映射 ggplot 美学到
这是一个简单的问题,我还没有找到明确的答案。在 ST_GeomFromGeoJSON 的规范页面上,它指出: ST_GeomFromGeoJSON works only for JSON Geomet
我需要找到一种方法来获取适合传递给某些 X 的几何体窗口命令的 -geometry 选项,以便保证覆盖所有不与任何 GNOME 重叠的 X 根窗口自己管理(例如,GNOME 面板窗口)。这与xwini
我使用sequelize-auto提取了一些PostGis图层的模型,给出: module.exports = function(sequelize, DataTypes) { return sequ
我是一名优秀的程序员,十分优秀!