利用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 相关文章推荐
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
transform python环境快速配置方法
Sep 27 Python
Django 多环境配置详解
May 14 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
pycharm 安装JPype的教程
Aug 08 Python
python 遍历pd.Series的index和value
Nov 26 Python
git查看、创建、删除、本地、远程分支方法详解
Feb 18 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
Python如何安装第三方模块
May 28 Python
pycharm 对代码做静态检查操作
Jun 09 Python
Python生成九宫格图片的示例代码
Apr 14 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/08/31 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
2011/03/25 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
Vue3.0数据响应式原理详解
2019/10/09 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
物理系毕业生自荐信
2013/11/01 职场文书
工程部主管岗位职责
2013/11/17 职场文书
外语系毕业生找工作的求职信
2013/11/28 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android