python怎么用代码写出心形(六行python代码的爱心曲线详解)
python怎么用代码写出心形
六行python代码的爱心曲线详解前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在excel上拟合正态分布了,尽管在第二天重新拾起了excel中那几个常见的函数和图像的做法,还是十分的惭愧。实际上,当时有效偏颇了,忽略了问题的本质,解决数据分析和可视化问题,其实也是python的拿手好戏。
例如,画出指定区间的一个多项式函数:
python 代码如下:
|
import numpy as np import matplotlib.pyplot as plt x = np.linspace( - 4 , 4 , 1024 ) y = . 25 * (x + 4. ) * (x + 1. ) * (x - 2. ) plt.title( '$f(x)=\\frac{1}{4}(x+4)(x+1)(x-2)$' ) plt.plot(x, y, c = 'g' ) plt.show() |
通过numpy的linspace方法来确定横坐标x的取值范围,列出方程,然后调用matplotlib的pyplot画出函数曲线即可。numpy 是一个用python实现的科学计算包,包括一个强大的n维数组对象array和成熟的函数库,有用于整合c/c++和fortran代码的工具包,提供了实用的线性代数、傅里叶变换和随机数生成函数等工具,可以理解成matlab。
记得中学的时候,我问老师三角函数到底有啥用?(无知者无畏)老师反问我,“如果给了你一块洋铁,怎样才能剪出煤炉烟囱的拐弯呢?”,现在仍然记得老师的这个例子,哪些看似抽象的数学公式,实际上是自己不知道她们的应用场景而已。
python代码如下:
|
import numpy as np import matplotlib.pyplot as plt x = np.linspace( 0 , 2 * np.pi, 100 ) ysinvalues = np.sin(x) ycosvalues = np.cos(x) plt.plot(x, ysinvalues) plt.plot(x, ycosvalues) plt.show() |
matplotlib 是一个 python 的 2d绘图库,甚至可以生成出版质量级别的图形。
对于那些正态分布而言,python 画起来也就相当简单了:
|
import numpy as np import matplotlib.pyplot as plt def pdf(x, mu, sigma): a = 1. / (sigma * np.sqrt( 2. * np.pi)) b = - 1. / ( 2. * sigma * * 2 ) return a * np.exp(b * (x - mu) * * 2 ) x = np.linspace( - 6 , 6 , 1000 ) for i in range ( 3 ): samples = np.random.standard_normal( 10 ) mu, sigma = np.mean(samples), np.std(samples) plt.plot(x, pdf(x, mu, sigma), color = '.66' ) plt.plot(x, pdf(x, 0. , 1. ), color = 'b' ) plt.show() |
为了不显得单调,这里多画了几条曲线。只要算出方差和均值,从excel中读出哪些数值就可以拟合正态分布了。
回归到主题,关于爱心线,有这样一个凄美的爱情故事。
迩来流浪于吴越,一片闲云空皎洁。
300多年前,斯德哥尔摩的街头,落魄的笛卡尔过着乞讨的生活,全部的财产破破烂烂的衣服和随身所带的几本数学书籍。清高的笛卡尔没有开口请求路人施舍,只是默默地低头在纸上写写画画,潜心于他的数学世界。 一个宁静的午后,笛卡尔照例坐在街头的阳光中研究数学问题,身边过往的人群,喧闹的车马队伍,都无法对他造成干扰。
有美一人,婉如清扬。邂逅相遇,与子偕臧。
“你在干什么呢?”扭过头,笛卡尔看到一张年轻秀丽的睑庞,一双清澈的眼睛如湛蓝的湖水,楚楚动人,她就是瑞典的小公主,国王最宠爱的女儿克里斯汀。 她蹲下身,拿过笛卡尔的数学书和草稿纸,和他交谈起来。言谈中,他发现,这个小女孩思维敏捷,对数学有着浓厚的兴趣。
几天后,笛卡尔意外地接到通知,国王聘请他做小公主的数学老师。满心疑惑的笛卡尔跟随侍卫一起来到皇宫,他听到了从远处传来的银铃般的笑声。他看到了那天在街头偶遇的女孩子,从此,他当上了公主的数学老师。
情不知所起,一往而深
公主的数学在笛卡尔的悉心指导下突飞猛进,他们之间也开始变得亲密起来。笛卡尔向她介绍了直角坐标系,代数与几何可以结合起来,也就是日后笛卡尔创立的解析几何学雏形。 在笛卡尔的带领下,克里斯汀走进了奇妙的坐标世界,她对曲线着了迷。每天的形影不离也使他们彼此产生了爱慕之心。
在瑞典这个浪漫的国度里,一段纯粹而美好的爱情悄然萌发。
念去去,千里烟波,暮霭沉沉楚天阔。
他们的恋情传到了国王的耳中,国王大怒,下令将笛卡尔处死。在克里斯汀的苦苦哀求下,国王将他放逐回国,公主被软禁在宫中。
当时,欧洲大陆正在流行黑死病。笛卡尔回到法国后不久,便染上重病。在生命进入倒计时的那段日子,他日夜思念的还是街头偶遇的那张温暖笑脸。他每天坚持给她写信,盼望着她的回音。然而,这些信都被国王拦截下来,公主一直没有收到他的任何消息。
欲知心里事,看取腹中书.
在笛卡尔给克里斯汀寄出第十三封信后,他永远地离开了这个世界。此时,被软禁在宫中的小公主依然徘徊在皇宫的走廊里,思念着远方的情人。
这最后一封信上没有写一句话,只有一个方程:r=a(1-sinθ)。
国王以为这个方程里隐藏着两个人的秘密,便把全城的数学家召集到皇宫,但是没有人能解开这个函数式。他不忍看着心爱的女儿每天闷闷不乐,便把这封信给了她。拿到信的克里斯汀欣喜若狂,她立即明白了恋人的意图,找来纸和笔,把图形画了出来,一颗心形图案出现在眼前,克里斯汀泪流满面,这条曲线就是著名的“心形线”。
国王去世后,克里斯汀继承王位,便立刻派人去法国寻找心上人的下落,收到的却是笛卡尔去世的消息,留下了一个永远的遗憾…… 这封享誉世界的另类情书,据说至今还保存在欧洲笛卡尔的纪念馆里。
这个故事的出处无从知道,网络上流传着各种各样的版本,甚至在百度百科也有着这个故事。后来,有人考证了真实性,认为这是一个美丽的谎言,但并不妨碍人们对爱心线喜爱。
在直角坐标系中,爱心线的方程的python 表达为:x** 2+ y** 2 + a * x= a * sqrt(x** 2+y** 2) 和 x** 2+ y** 2 - a * x= a * sqrt(x** 2+y** 2)通过x 来求对应的y值很麻烦,就像软件设计中的“万能层”那样,可以采用参数方程来表示:
|
x = a * ( 2 * cos(t) - cos( 2 * t)) y = a * ( 2 * sin(t) - sin( 2 * t)) |
具体的python代码如下:
|
import numpy as np import matplotlib.pyplot as plt a = 1 t = np.linspace( 0 , 2 * np.pi, 1024 ) x = a * ( 2 * np.cos(t) - np.cos( 2 * t)) y = a * ( 2 * np.sin(t) - np.sin( 2 * t)) plt.plot(y, x,color = 'r' ) plt.show() |
代表爱心的心形线来了:
但这不是六行代码呀?也不是r=a(1-sinθ)呀? 的确如此,那是极坐标系,python 的matplotlib同样支持极坐标系的,爱心线的六行pyton代码如下:
|
import numpy as np import matplotlib.pyplot as plt t = np.linspace( 0 , 2 * np.pi, 1024 ) plt.axes(polar = true) plt.plot(t, 1. - np.sin(t),color = "r" ) plt.show() |
这样,得到的就是封面中的图像了:
心形线确实是爱心满满,如果融入了忧伤会是怎样呢?
|
import numpy as np import matplotlib.pyplot as plt x = np.linspace( - 8 , 8 , 1024 ) y1 = 0.618 * np. abs (x) - 0.8 * np.sqrt( 64 - x * * 2 ) y2 = 0.618 * np. abs (x) + 0.8 * np.sqrt( 64 - x * * 2 ) plt.plot(x, y1, color = 'r' ) plt.plot(x, y2, color = 'r' ) plt.show() |
这样就得到了另一个爱心线:
网络上还有关于爱心线的各种漂亮实现,也充满了各种各样的情绪,但对于每一种,基本上都可以用python 相对简洁的实现。
实际上,绘图很简单,难的是那些曲线方程的表达以及实际的应用场景需求,比如螺旋线。
进一步,还可以画出各种的3维视图,例如:
作为数据分析乃至大数据处理的最后一个环节,就是所谓洞见的可视化,python 可以说是其中的一个简单实用的工具。
参考阅读
http://matplotlib.org/
以上所述是小编给大家介绍的六行python代码的爱心曲线详解详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://blog.csdn.net/wireless_com/article/details/69817498
- python selenium用法详解(python selenium执行所有测试用例并生成报告的方法)
- python中lambda函数是什么意思(python ---lambda匿名函数介绍)
- python使用telnet(python 处理telnet返回的More,以及get想要的那个参数方法)
- pythonrequests框架实例(Python requests模块实例用法)
- python mysql配置(详解python校验SQL脚本命名规则)
- 图解python轻松快速掌握(10招!看骨灰级Pythoner玩转Python的方法)
- python2个字典合成(Python两个字典键同值相加的几种方法)
- python的log函数(Python3 log10函数简单用法)
- 2021-10-23 10:04:24
- python语言的读取图像(详解python读取image)
- python3和python区别(Python2与Python3的区别实例总结)
- linux切换python版本(linux安装python修改默认python版本方法)
- python中的isi(深入浅析Python 中 is 语法带来的误解)
- markdown和python的关系(解决python Markdown模块乱码的问题)
- pythonsql注入检测(Python版Mssql爆破小脚本)
- python 的常用工具(Python静态类型检查新工具之pyright 使用指南)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
- 当年的 白洋淀战神 练肌肉 嘎子哥也成为行走的荷尔蒙(当年的白洋淀战神)
- 肌肉小子陈康, 亚洲巨兽 黄哲勋,哪个才是你的菜(肌肉小子陈康亚洲巨兽)
- 新闻周刊 青岛网红 赵厂长 编段子一箩筐输出快乐,陪父亲十二载勇斗病魔(新闻周刊青岛网红)
- 44岁夏雨演谋女郎爸,大其24岁却看不出,互动不怕袁泉吃醋(44岁夏雨演谋女郎爸)
- 全椒人,你还记得吗 那年,那人,那网,那些我们的青春记忆(全椒人你还记得吗)
热门推荐
- sqlserver索引实例(SQL Server索引的原理深入解析)
- python删除列表中的重复元素(Python实现去除列表中重复元素的方法总结7种方法)
- mysql数据库出现乱码(数据库 MySQL中文乱码解决办法总结)
- centos7rabbitmq怎么装(如何在centos上使用yum安装rabbitmq-server)
- canvas怎么压缩图片(使用canvas压缩图片大小的方法示例)
- ubuntu安装hadoop单机版(VMware + Ubuntu18.04 搭建Hadoop集群环境的图文教程)
- 阿里云对象存储oss收费吗(阿里云存储服务OSS基本概念)
- python默认缩进设置(不归路系列:Python入门之旅-一定要注意缩进!!!推荐)
- 将SQL Server数据迁移到MySQL的方法
- javapoi简单代码(Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9