前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在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 数据可视化编程实战》

《Python 数据分析实战》

六行python代码的爱心曲线公式_六行python代码的爱心曲线-Go语言中文社区相关推荐

  1. python的爱心曲线公式_六行python代码的爱心曲线详解

    前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...

  2. python语言英语单词_叮叮叮 重点之中的python必备英语单词(2)来啦!请记得查收-Go语言中文社区...

    1. terminate 终止 2. request 请求 3. response 响应 4. content 内容 5. url 链接.网址 6. picture 图片 7. split 分割 8. ...

  3. python天天向上的力量三天打鱼两天晒网_017 示例3-天天向上的力量-Go语言中文社区...

    一."天天向上的力量"问题分析 1.1 天天向上的力量 基本问题:持续的价值 一年365天,每天进步1%,累计进步多少呢? (1.01^{365}) 一年365天,每天退步1%,累 ...

  4. python爬取微博评论超100页_python爬取新浪微博评论-Go语言中文社区

    简介 爬取微博m站评论.由于api限制只能爬取前100页,如果想要更全数据需爬pc端. 工具 python 3.5 requests库 re库 步骤 1. 登陆保存cookie 首先,打开m.weib ...

  5. java 分布式缓存 开源_分布式缓存开源框架Flasher介绍-Go语言中文社区

    写在前面 今天给大家推荐款国内某一线电商平台Redis分布式缓存框架. 推荐理由: 日均访问量100亿.QPS:157W.包含57项业务. 也是工作3-5年以上的程序员必看的源码资料,千万别错过. F ...

  6. c语言三角函数atan,C++中tan、atan、sin、cos等三角函数用法的代码演示及结果,注意角度和弧度的转换!-Go语言中文社区...

    进行相机坐标系相关公式推导时,经常碰到三角函数的使用.时间一长就生疏,碰到问题再查,很费时间.所以就总结一下,也希望能帮到更多的人.下面就通过简练的代码,把常用的cos.sin.tan.atan等通过 ...

  7. mysql 设置中文 重启_如何启动/停止/重启MySQL + 进入MYSQL-Go语言中文社区

    Ubuntu 如何启动/停止/重启MySQL 一. 启动方式 1.使用 service 启动:service mysql start 2.使用 mysqld 脚本启动:/etc/inint.d/mys ...

  8. go MySQL 多语句_八、MySQL经典查询语句-Go语言中文社区

    student表 course表 score表 teacher表 1. 查询Student表中的所有记录的Sname.Ssex和Class列. select Sname,Ssex,Class from ...

  9. rust的矿坑_转: Rust中的Pin详解 【Rust语言中文社区】

    Rust中的Pin详解 原创 automanyang Rust语言中文社区 昨天 https://mp.weixin.qq.com/s/PjctbPbyR5OeaqTHZdB5uQ 相关概念 Pin ...

最新文章

  1. android 嵌套h5实现2048游戏
  2. 用Python写一份独特的元宵节祝福
  3. C#[Serializable]在C#中的作用-NET 中的对象序列化
  4. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 测试 lib7zr.so 动态库调用 )
  5. boost::smart_ptr模块boost/pointer_cast.hpp 的测试
  6. Java设置软件图标即窗口上角图标
  7. 用Java刷OJ超时怎么办?原因分析及解决方式
  8. 阿里芯片大动作!NPU明年6月发布,“平头哥”研发量子芯片
  9. oracle drop purge
  10. 实验四|Python 企业偿债能力分析
  11. 调查问卷设计的一般步骤与方法
  12. [BJOI2019] 排兵布阵
  13. jdt eclipse_Eclipse JDT语言服务器项目
  14. PCB+SMT线上报价系统,数字化建设如何获取现金流?
  15. PacBio三代甲基化分析流程(不包含序列组装)
  16. 02-windows调试工具(DebugDiag使用)
  17. 十几套IT培训视频教程免费下载,为你节省几万元培训费用
  18. java白盒测试代码_Java白盒测试
  19. ibm服务器日志文件提取,IBM服务器日志搜集方法
  20. 动态规划-拔萝卜问题

热门文章

  1. 糖果车站的街外小雪初晴
  2. 十六进制字符串转十进制数字
  3. 火绒规则 禁止所有软件的安装_【技术宅】火绒安全软件防流氓规则编写及使用小白教程(附成品)...
  4. i 春秋CTF题目 百度杯 9月场 再见CMS Upload 复现
  5. oracle存小数用 number(m,n)
  6. 美国北亚利桑那大学计算机专业排名,北亚利桑那大学排名 综合排名和专业排名介绍...
  7. 192.168.1.1是什么?192.168.1.1详细解释!
  8. Linux好书、经典书籍推荐
  9. Prometheus和Grafana告警服务创建与对接腾讯云短信告警平台(prometheus_alert)
  10. OLA端点问题实际应用效果