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爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
python模拟事件触发机制详解
Jan 19 Python
pandas多级分组实现排序的方法
Apr 20 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
django用户登录验证的完整示例代码
Jul 21 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
Python爬虫开发与项目实战
Dec 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
桌面中心(二)数据库写入
2006/10/09 PHP
生成php程序的php代码
2008/04/07 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
python中字符串前面加r的作用
2015/06/04 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
python 用struct模块解决黏包问题
2020/11/07 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
印度低票价航空公司:GoAir
2017/10/11 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
怎么写有吸引力的自荐信
2013/11/17 职场文书
体育老师的教学自我评价分享
2013/11/19 职场文书
十八大报告观后感
2014/01/28 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书