python+matplotlib绘制简单的海豚(顶点和节点的操作)


Posted in Python onJanuary 02, 2018

海豚

本文例子主要展示了如何使用补丁、路径和转换类绘制和操作给定的顶点和节点的形状。

测试可用。

import matplotlib.cm as cm
import matplotlib.pyplot as plt
from matplotlib.patches import Circle, PathPatch
from matplotlib.path import Path
from matplotlib.transforms import Affine2D
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)


r = np.random.rand(50)
t = np.random.rand(50) * np.pi * 2.0
x = r * np.cos(t)
y = r * np.sin(t)

fig, ax = plt.subplots(figsize=(6, 6))
circle = Circle((0, 0), 1, facecolor='none',
        edgecolor=(0, 0.8, 0.8), linewidth=3, alpha=0.5)
ax.add_patch(circle)

im = plt.imshow(np.random.random((100, 100)),
        origin='lower', cmap=cm.winter,
        interpolation='spline36',
        extent=([-1, 1, -1, 1]))
im.set_clip_path(circle)

plt.plot(x, y, 'o', color=(0.9, 0.9, 1.0), alpha=0.8)

# Dolphin from OpenClipart library by Andy Fitzsimon
#    <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
#     <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
#     <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
#     <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
#    </cc:License>

dolphin = """
M -0.59739425,160.18173 C -0.62740401,160.18885 -0.57867129,160.11183
-0.57867129,160.11183 C -0.57867129,160.11183 -0.5438361,159.89315
-0.39514638,159.81496 C -0.24645668,159.73678 -0.18316813,159.71981
-0.18316813,159.71981 C -0.18316813,159.71981 -0.10322971,159.58124
-0.057804323,159.58725 C -0.029723983,159.58913 -0.061841603,159.60356
-0.071265813,159.62815 C -0.080250183,159.65325 -0.082918513,159.70554
-0.061841203,159.71248 C -0.040763903,159.7194 -0.0066711426,159.71091
0.077336307,159.73612 C 0.16879567,159.76377 0.28380306,159.86448
0.31516668,159.91533 C 0.3465303,159.96618 0.5011127,160.1771
0.5011127,160.1771 C 0.63668998,160.19238 0.67763022,160.31259
0.66556395,160.32668 C 0.65339985,160.34212 0.66350443,160.33642
0.64907098,160.33088 C 0.63463742,160.32533 0.61309688,160.297
0.5789627,160.29339 C 0.54348657,160.28968 0.52329693,160.27674
0.50728856,160.27737 C 0.49060916,160.27795 0.48965803,160.31565
0.46114204,160.33673 C 0.43329696,160.35786 0.4570711,160.39871
0.43309565,160.40685 C 0.4105108,160.41442 0.39416631,160.33027
0.3954995,160.2935 C 0.39683269,160.25672 0.43807996,160.21522
0.44567915,160.19734 C 0.45327833,160.17946 0.27946869,159.9424
-0.061852613,159.99845 C -0.083965233,160.0427 -0.26176109,160.06683
-0.26176109,160.06683 C -0.30127962,160.07028 -0.21167141,160.09731
-0.24649368,160.1011 C -0.32642366,160.11569 -0.34521187,160.06895
-0.40622293,160.0819 C -0.467234,160.09485 -0.56738444,160.17461
-0.59739425,160.18173
"""

vertices = []
codes = []
parts = dolphin.split()
i = 0
code_map = {
  'M': (Path.MOVETO, 1),
  'C': (Path.CURVE4, 3),
  'L': (Path.LINETO, 1)}

while i < len(parts):
  code = parts[i]
  path_code, npoints = code_map[code]
  codes.extend([path_code] * npoints)
  vertices.extend([[float(x) for x in y.split(',')] for y in
           parts[i + 1:i + npoints + 1]])
  i += npoints + 1
vertices = np.array(vertices, float)
vertices[:, 1] -= 160

dolphin_path = Path(vertices, codes)
dolphin_patch = PathPatch(dolphin_path, facecolor=(0.6, 0.6, 0.6),
             edgecolor=(0.0, 0.0, 0.0))
ax.add_patch(dolphin_patch)

vertices = Affine2D().rotate_deg(60).transform(vertices)
dolphin_path2 = Path(vertices, codes)
dolphin_patch2 = PathPatch(dolphin_path2, facecolor=(0.5, 0.5, 0.5),
              edgecolor=(0.0, 0.0, 0.0))
ax.add_patch(dolphin_patch2)

plt.show()

效果如下:

python+matplotlib绘制简单的海豚(顶点和节点的操作)

总结

以上就是本文关于python+matplotlib绘制简单的海豚(顶点和节点的操作)的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python去除文件中空格、Tab及回车的方法
Apr 12 Python
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
python版大富翁源代码分享
Nov 19 Python
python字符串查找函数的用法详解
Jul 08 Python
pandas如何处理缺失值
Jul 31 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
Python实现智慧校园自动评教全新版
Jun 18 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 Python
Python实现进程同步和通信的方法
Jan 02 #Python
mac系统安装Python3初体验
Jan 02 #Python
Python中static相关知识小结
Jan 02 #Python
python tensorflow基于cnn实现手写数字识别
Jan 01 #Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 #Python
python 类对象和实例对象动态添加方法(分享)
Dec 31 #Python
利用python将图片转换成excel文档格式
Dec 30 #Python
You might like
PHP 中dirname(_file_)讲解
2007/03/18 PHP
php 在线打包_支持子目录
2008/06/28 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
python设计模式大全
2016/06/27 Python
python中partial()基础用法说明
2018/12/30 Python
使用Python构造hive insert语句说明
2020/06/06 Python
Python字符串三种格式化输出
2020/09/17 Python
python 爬取小说并下载的示例
2020/12/07 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
旅行社各个岗位职责
2014/03/15 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python