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实现根据主机名字获得所有ip地址的方法
Jun 28 Python
深入理解Python变量与常量
Jun 02 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
Python创建字典的八种方式
Feb 27 Python
python requests指定出口ip的例子
Jul 25 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
Keras loss函数剖析
Jul 06 Python
一文读懂Python 枚举
Aug 25 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 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
我的论坛源代码(十)
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
python实现日志按天分割
2019/07/22 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
Python文件操作函数用法实例详解
2019/12/24 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
什么是会话Bean
2015/05/14 面试题
汽车驾驶求职信
2013/10/25 职场文书
安全事故检讨书
2014/01/18 职场文书
优秀民警事迹材料
2014/01/29 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电