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中用于处理字符串的center()方法
May 18 Python
python中的字典操作及字典函数
Jan 03 Python
python列表生成式与列表生成器的使用
Feb 23 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
简单了解python高阶函数map/reduce
Jun 28 Python
python 标准差计算的实现(std)
Jul 29 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 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中函数内引用全局变量的方法
2008/10/20 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
ThinkPHP路由详解
2015/07/27 PHP
PHP中list方法用法示例
2016/12/01 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
javascript读写json示例
2014/04/11 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
js实现手机web图片左右滑动效果
2017/12/29 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
数学检讨书1000字
2014/02/24 职场文书
环保倡议书格式范文
2014/05/14 职场文书
会议主持人开场白台词
2015/05/28 职场文书