Python-Matplotlib可视化(5)——添加自定义形状绘制复杂图形

本文介绍了如何在Matplotlib中使用plt.grid()函数添加辅助网格,并通过Line2D和patches模块创建和定制线条和形状,包括圆形、矩形、椭圆和自定义多边形。同时强调了调整图形比例和使用学习资源的重要性。
摘要由CSDN通过智能技术生成

plt.grid(True, lw=.5, ls=‘–’, c=‘c’)

plt.show()

添加辅助网格

Tips:添加辅助网格只需调用以True为参数的plt.grid()函数,网格由线条组成,因此plt.grid()可以接受线条样式参数(如linewidth、linestyle以及color等)来修改辅助网络中的线条。

添加辅助线


由于Matplotlib生成的所有图形都由基本原语组成,因此我们可以使用一个基本的原语:lines来添加辅助线。

import matplotlib.pyplot as plt

N = 16

for i in range(N):

plt.gca().add_line(plt.Line2D((0, i), (N - i, 0), color = ‘m’))

plt.axis(‘tight’)

plt.show()

添加辅助线

plt.Line2D()函数的作用是:创建一个新的Line2D对象,必要参数是线段的两个端点,可选参数包括所有介绍过的线条样式参数(如linewidth、linestyle以及color等),创建线段完成后,并不会显示该直线,若需要显示此对象需要使用plt.gca()。plt.gca()函数的作用是返回负责跟踪渲染内容的对象。调用plt.gca().add_line()就可以渲染创建的Line2Dd对象。使用plt.axis()函数可以修改图形比例,如不添加此函数的调用将导致绘制图形不能完整显示。

添加形状


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

import matplotlib.patches as patches

import matplotlib.pyplot as plt

圆形

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

添加形状

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"等) |

自定义形状


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

使用多边形

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

import numpy as np

import matplotlib.patches as patches

import matplotlib.pyplot as plt

theta = 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()

使用多边形

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值