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中的包和模块实例
Nov 22 Python
python递归计算N!的方法
May 05 Python
Python操作csv文件实例详解
Jul 31 Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 Python
Python实现简易Web爬虫详解
Jan 03 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
基于PyQT实现区分左键双击和单击
May 19 Python
Python实现GIF图倒放
Jul 16 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中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
php实现的日历程序
2015/06/18 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
PHP 实现重载
2021/03/09 PHP
载入进度条 效果
2006/07/08 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
JS精确判断数据类型代码实例
2019/12/18 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python实用代码片段收集贴
2015/06/03 Python
python中列表和元组的区别
2017/12/18 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
Python FFT合成波形的实例
2019/12/04 Python
python读取Kafka实例
2019/12/23 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
小学生期末评语大全
2014/04/21 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python