前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在图中添加多边形

在图中添加多边形

作者头像
生信修炼手册
发布2020-09-23 14:59:20
6130
发布2020-09-23 14:59:20
举报
文章被收录于专栏:生信修炼手册

在matplotlib中有一个子模块patches, 提供了绘制各种多边形的功能,常用的多边形及其画法如下

1. 圆形

用法如下

代码语言:javascript
复制
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> patch = patches.Circle((0.5, 0.5), radius=0.2, transform=ax.transAxes)
>>> ax.add_artist(patch)
<matplotlib.patches.Circle object at 0x00E14EF8>
>>> plt.show()

输出结果如下

2. 椭圆

用法如下

代码语言:javascript
复制
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> patch = patches.Ellipse((0.5, 0.5), width=0.4, height= 0.2)
>>> ax.add_artist(patch)
<matplotlib.patches.Ellipse object at 0x090E49A0>
>>> plt.show()

输出结果如下

上述椭圆是有填充色的,没有填充的椭圆可以通过如下代码实现

代码语言:javascript
复制
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> patch = patches.Arc((0.5, 0.5), width=0.4, height= 0.2)
>>> ax.add_artist(patch)
<matplotlib.patches.Arc object at 0x01305E68>
>>> plt.show()

输出结果如下

3. 箭头

用法如下

代码语言:javascript
复制
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> patch = patches.Arrow(x=0.2, y=0.2, dx=0.5, dy=0.6)
>>> ax.add_artist(patch)
<matplotlib.patches.Arrow object at 0x07C0D478>
>>> plt.show()

输出结果如下

4. 矩形

用法如下

代码语言:javascript
复制
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> patch = patches.Rectangle(xy=(0.2,0.2), width=0.5, height=0.4)
>>> ax.add_artist(patch)
<matplotlib.patches.Rectangle object at 0x00A9F4F0>
>>> plt.show()

输出结果如下

5. 多边形

用法如下

代码语言:javascript
复制
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> patch = patches.Polygon(np.array(([0.2, 0.2], [0.4, 0.6], [0.6, 0.2])))
>>> ax.add_artist(patch)
<matplotlib.patches.Polygon object at 0x0A494F28>
>>> plt.show()

输出结果如下

6. 连线

用法如下

代码语言:javascript
复制
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> patch = patches.ConnectionPatch(xyA=(0.2, 0.2), xyB=(0.8, 0.8), coordsA=ax.transData, coordsB=ax.transData)
>>> ax.add_artist(patch)
<matplotlib.patches.ConnectionPatch object at 0x00A84E98>
>>> plt.show()

输出结果如下

除了简单的连线外,还可以通过ConnectionStyle设置连线的样式,比如设置成曲线,代码如下

代码语言:javascript
复制
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> style = patches.ConnectionStyle.Arc3(rad=0.2)
>>> patch = patches.ConnectionPatch(xyA=(0.2, 0.2), xyB=(0.8, 0.8), coordsA=ax.transData, coordsB=ax.transData,connectionstyle=style)
>>> ax.add_artist(patch)
<matplotlib.patches.ConnectionPatch object at 0x01314718>
>>> plt.show()

输出结果如下

7. 自定义多边形

通过子模块path可以自定义形状,用法如下

代码语言:javascript
复制
>>> from matplotlib.path import Path
>>> fig, ax = plt.subplots(figsize=(4,4))
>>> verts = [(0.2, 0.2),(0.2, 0.6),(0.5,0.8),(0.8,0.6),(0.8,0.2)]
>>> codes = [Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.LINETO]
>>> path = Path(verts, codes)
>>> patch = patches.PathPatch(path)
>>> ax.add_artist(patch)
<matplotlib.patches.PathPatch object at 0x090C20B8>
>>> plt.show()

输出结果如下

对于单个多边形而言,通过add_artist方法添加到axes上,如果需要绘制多个多边形,可以通过绘制PatchCollection来一次性添加多个,用法如下

代码语言:javascript
复制
>>> from matplotlib.collections import PathCollection
>>> fig,ax = plt.subplots(figsize=(4,4))
>>> patch1 = patches.Arc((0.5, 0.5), width=0.4, height= 0.2)
>>> patch2 = patches.Arrow(x=0.2, y=0.2, dx=0.5, dy=0.6)
>>> patch = []
>>> patch.append(patch1)
>>> patch.append(patch2)
>>> p = PatchCollection(patch)
>>> ax.add_collection(p)
<matplotlib.collections.PatchCollection object at 0x0916D088>
>>> plt.show()

输出结果如下

通过patches子模块,可以灵活的在图中添加各种多边形。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档