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 文件重命名工具代码
Jul 26 Python
使用python Django做网页
Nov 04 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
python实现提取百度搜索结果的方法
May 19 Python
Python端口扫描简单程序
Nov 10 Python
Python列表删除的三种方法代码分享
Oct 31 Python
Python多线程threading和multiprocessing模块实例解析
Jan 29 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Python3字符串encode与decode的讲解
Apr 02 Python
详解python配置虚拟环境
Apr 08 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 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学习教程之第2天
2008/06/15 PHP
PHP 字符串 小常识
2009/06/05 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
简单JS代码压缩器
2006/10/12 Javascript
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
javascript的几种写法总结
2016/09/30 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python根据出生日期获得年龄的方法
2015/03/31 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
美国钻石商店:Zales
2016/11/20 全球购物
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
小学教师师德反思
2014/02/03 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
绿色出行口号
2014/06/18 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
工地材料员岗位职责
2015/04/11 职场文书
重阳节简报
2015/07/20 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android