Matplotlib添加自定义形状

简介: 绘制图形时我们还需要绘制复杂形状,以使统计图看起来更加高级,考虑到这一需求,Matplotlib提供了大量自定义形状的函数,利用可以在统计图中添加各种复杂形状,以使得所绘制的统计图更加具有高级感。

前言

我们可以用 Matplotlib 绘制出复杂而又精美的统计图,同时也讲解了注释的用法,但是这远远不够,很多时候我们还需要绘制复杂形状,考虑到这一需求,Matplotlib 提供了大量自定义形状的函数,利用可以在统计图中添加各种复杂形状,以使得所绘制的统计图更加具有高级感。

添加形状

我们已经学习了使用 lines 原语制作线条,但是在实际中,我们可能需要更多的形状,使用其他形状的方式与 lines 原语的相同。

importmatplotlib.patchesaspatchesimportmatplotlib.pyplotasplt# 圆形shape=patches.Circle((0, 0), radius=1., color='m')
plt.gca().add_patch(shape)
# 四边形shape=patches.Rectangle((2.5, -.5), 2., 1., color='c')
plt.gca().add_patch(shape)
# 椭圆形shape=patches.Ellipse((0, -2.), 2., 1., angle=45., color='y')
plt.gca().add_patch(shape)
# 花状框shape=patches.FancyBboxPatch((2.5, -2.5), 2., 1., boxstyle='sawtooth', color='b')
plt.gca().add_patch(shape)
# 显示plt.grid(True, alpha=0.3)
plt.axis('scaled')
plt.show()

绘图67.png

Tips:与使用lines原语一样,使用 Matplotlib 其它形状原语进行操作时,必须使用 pyplot.axis() 函数修改图形比例,否则将导致绘制图形不能完整显示。

无论显示哪种形状,其原理都是一样的。在 Matplotlib 中,形状被描述为名为 patch 的路径。matplotlib.patches 模块中提供了几种形状的路径。与线端一样,仅创建路径并不会在屏幕上渲染它,必须明确使用渲染函数 plt.gca()。

matplotlib.patches 模块包含很多路径构造类,常用的主要包括:

路径构造类名

描述

Circle

需要圆心坐标和半径作为参数

Rectangle

需要四边形左下角的坐标和边长作为参数

Ellipse

需要椭圆中心坐标和两轴半长作为参数

FancyBox

这类似于花形框,需要可选参数 boxstyle 指定样式,可选值包括:"larrow"、"rarrow"、"round"、"round4"、"roundtooth"、"sawtooth"以及 "square" 等

自定义形状

除了预定义的形状外,我们还可以使用多边形定义任意形状。

使用多边形

多边形的使用方法与上一部分中路径的使用方法类似:

importnumpyasnpimportmatplotlib.patchesaspatchesimportmatplotlib.pyplotasplttheta=np.linspace(0, 2*np.pi, 8)
points=np.vstack((np.cos(theta), np.sin(theta))).transpose()
plt.gca().add_patch(patches.Polygon(points, color='m'))
plt.grid(True)
plt.axis('scaled')
plt.show()

绘图68.png

Tips:matplotlib.patches.Polygon() 构造函数接受多边形顶点的坐标列表作为输入参数值。

使用路径属性

所有的路径都可以使用线条及填充的属性:包括 linewidth、linestyle、edgecolor、facecolor、hatch 等:

importnumpyasnpimportmatplotlib.patchesaspatchesimportmatplotlib.pyplotasplttheta=np.linspace(0, 2*np.pi, 8)
points=np.vstack((np.cos(theta), np.sin(theta))).transpose()
plt.gca().add_patch(plt.Circle((0, 0), radius=1., color='m'))
plt.gca().add_patch(plt.Polygon(points, closed=None, fill=None, lw=3., ls='dashed', edgecolor='c'))
plt.grid(True)
plt.axis('scaled')
plt.show()

绘图69.png

Tips:上述示例中,使用带有虚线边(ls = 'dashed')的非填充(fill=None)多边形来绘制多边形轮廓,使用此方法,就不必创建多个Line对象来绘制此多边形。

相关文章
|
11月前
|
数据可视化 Python
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
175 0
|
4月前
|
搜索推荐 数据可视化 Python
Matplotlib高级技巧:自定义图表样式与布局
【4月更文挑战第17天】本文介绍了Matplotlib的高级技巧,包括自定义图表样式和布局。通过设置`color`、`linestyle`、`marker`参数,可以改变线条、散点的颜色和样式;使用自定义样式表实现整体风格统一。在布局方面,利用`subplots`创建多子图,通过`gridspec`调整复杂布局,`subplots_adjust`优化间距,以及添加图例和标题增强可读性。掌握这些技巧能帮助创建更具吸引力的个性化图表。
|
Python
Matplotlib自定义统计图比例
图形的比例对于统计图而言至关重要,好的图形比例可以让人方便的获取图形中相关数据间的关系,因此设置图形比例对于统计图而言是至关重要的,本文介绍如何使用Maplotlib修改统计图比例。
1433 0
Matplotlib自定义统计图比例
|
Python
Matplotlib自定义样式绘制精美统计图
matplotlib提供的所有绘图都带有默认样式,但有时需要自定义绘图的颜色和样式,以绘制更加符合审美要求的图像。matplotlib的设计考虑到了此需求,很容易调整matplotlib图形的样式。
806 0
Matplotlib自定义样式绘制精美统计图
|
存储 索引 Python
Matplotlib使用自定义颜色绘制统计图
matplotlib 提供的所有绘图都带有默认样式,但有时可能需要自定义绘图的颜色和样式,以对绘制更加精美、符合审美要求的图像。
1565 0
Matplotlib使用自定义颜色绘制统计图
|
Python 定位技术
Matplotlib 中文用户指南 6 自定义 matplotlib
自定义 matplotlib 原文:Customizing matplotlib 译者:飞龙 协议:CC BY-NC-SA 4.0 使用样式表自定义绘图 style包为易于切换的绘图『样式』增加了支持,它们与matplotlibrc文件参数相同。
763 0
|
索引 Python
Matplotlib 中文用户指南 3.3 使用 GridSpec 自定义子图位置
使用 GridSpec 自定义子图位置 原文:Customizing Location of Subplot Using GridSpec 译者:飞龙 协议:CC BY-NC-SA 4.0 GridSpec 指定子图将放置的网格的几何位置。
1326 0
|
9天前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
33 16
|
1天前
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。
|
9天前
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化