利用python画一颗心的方法示例


Posted in Python onJanuary 31, 2017

前言

Python一般使用Matplotlib制作统计图形,用它自己的说法是‘让简单的事情简单,让复杂的事情变得可能'。用它可以制作折线图,直方图,条形图,散点图,饼图,谱图等等你能想到的和想不到的统计图形,这些图形可以导出为多种具有出版质量的格式。此外,它和ipython结合使用,确实方便,谁用谁知道!本文将介绍利用python中的matplotlib画一颗心,感兴趣的朋友们下面来一起看看吧。

安装matplotlib

首先要安装matplotlib

pip install matplotlib

windows用户可以去官网下载安装。官网看到matpltlib的作者John Hunter (1968-2012)刚去世不久,在此感谢他创造了这样一个强大的绘图工具。

上代码

#!/usr/bin/env python3
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np


def heart_3d(x,y,z):
 return (x**2+(9/4)*y**2+z**2-1)**3-x**2*z**3-(9/80)*y**2*z**3


def plot_implicit(fn, bbox=(-1.5, 1.5)):
 ''' create a plot of an implicit function
 fn ...implicit function (plot where fn==0)
 bbox ..the x,y,and z limits of plotted interval'''
 xmin, xmax, ymin, ymax, zmin, zmax = bbox*3
 fig = plt.figure()
 ax = fig.add_subplot(111, projection='3d')
 A = np.linspace(xmin, xmax, 100) # resolution of the contour
 B = np.linspace(xmin, xmax, 40) # number of slices
 A1, A2 = np.meshgrid(A, A) # grid on which the contour is plotted

 for z in B: # plot contours in the XY plane
  X, Y = A1, A2
  Z = fn(X, Y, z)
  cset = ax.contour(X, Y, Z+z, [z], zdir='z', colors=('r',))
  # [z] defines the only level to plot
  # for this contour for this value of z

 for y in B: # plot contours in the XZ plane
  X, Z = A1, A2
  Y = fn(X, y, Z)
  cset = ax.contour(X, Y+y, Z, [y], zdir='y', colors=('red',))

 for x in B: # plot contours in the YZ plane
  Y, Z = A1, A2
  X = fn(x, Y, Z)
  cset = ax.contour(X+x, Y, Z, [x], zdir='x',colors=('red',))

 # must set plot limits because the contour will likely extend
 # way beyond the displayed level. Otherwise matplotlib extends the plot limits
 # to encompass all values in the contour.
 ax.set_zlim3d(zmin, zmax)
 ax.set_xlim3d(xmin, xmax)
 ax.set_ylim3d(ymin, ymax)

 plt.show()

if __name__ == '__main__':
 plot_implicit(heart_3d)

效果是这个样子,挺有意思的:

利用python画一颗心的方法示例

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
python重试装饰器示例
Feb 11 Python
python简单实现操作Mysql数据库
Jan 29 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
一百多行python代码实现抢票助手
Sep 25 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
python自定义时钟类、定时任务类
Feb 22 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
Python异常继承关系和自定义异常实现代码实例
Feb 20 Python
python+flask编写一个简单的登录接口
Nov 13 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 Python
利用Python脚本生成sitemap.xml的实现方法
Jan 31 #Python
利用python实现命令行有道词典的方法示例
Jan 31 #Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 #Python
python 编程之twisted详解及简单实例
Jan 28 #Python
详解python之简单主机批量管理工具
Jan 27 #Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 #Python
在Django同1个页面中的多表单处理详解
Jan 25 #Python
You might like
供参考的 php 学习提高路线分享
2011/10/23 PHP
php实现递归的三种基本方式
2020/07/04 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
Javascript中的数学函数
2007/04/04 Javascript
jquery 简单导航实现代码
2009/09/11 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
script的async属性以非阻塞的模式加载脚本
2013/01/15 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
javascript的BOM汇总
2015/07/16 Javascript
angular2使用简单介绍
2016/03/01 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python实现简易Web爬虫详解
2018/01/03 Python
python中的set实现不重复的排序原理
2018/01/24 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
入党积极分子思想汇报范文
2014/01/05 职场文书
一年级班主任寄语
2014/01/19 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
工商行政处罚决定书
2015/06/24 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
Python装饰器详细介绍
2022/03/25 Python
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js