1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Python-Matplotlib可视化(5)——添加自定义形状绘制复杂图形

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

时间:2024-03-04 19:19:49

相关推荐

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

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

前言添加辅助网格添加辅助线添加形状自定义形状使用多边形使用路径属性系列链接

前言

在系列博文的中,我们已经学习了如何自定义绘图的颜色和样式,以使得绘制更加精美、符合审美要求。可以用Matplotlib绘制出复杂而又精美的统计图,同时也讲解了注释的用法,但是这远远不够,很多时候我们还需要绘制复杂形状,以使统计图变得更加复杂,看起来更加高级,考虑到这一需求,Matplotlib提供了大量自定义形状的函数,利用可以在统计图中添加各种复杂形状,以使得所绘制的统计图更加具有高级感。

添加辅助网格

当我们查看图形时,可能需要快速估计出图形中某一部分的坐标,这时,向图形中添加辅助网格将是一种提高图形可读性的良好方法。

import numpy as npimport matplotlib.pyplot as pltdata = np.random.standard_normal((150, 2))plt.scatter(data[:,0],data[:,1],c='y')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 pltN = 16for 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 patchesimport 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模块包含很多路径构造类,常用的主要包括:

自定义形状

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

使用多边形

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

import numpy as npimport matplotlib.patches as patchesimport matplotlib.pyplot as plttheta = 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()

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

使用路径属性

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

import numpy as npimport matplotlib.patches as patchesimport matplotlib.pyplot as plttheta = 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()

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

系列链接

Python-Matplotlib可视化(1)——一文详解常见统计图的绘制

Python-Matplotlib可视化(2)——自定义颜色绘制精美统计图

Python-Matplotlib可视化(3)——自定义样式绘制精美统计图

Python-Matplotlib可视化(4)——添加注释让统计图通俗易懂

Python-Matplotlib可视化(6)——自定义坐标轴让统计图清晰易懂

Python-Matplotlib可视化(7)——多方面自定义统计图绘制

Python-Matplotlib可视化(8)——图形的输出与保存

Python-Matplotlib可视化(9)——精通更多实用图形的绘制

Python-Matplotlib可视化(10)——一文详解3D统计图的绘制

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。