搜尋
首頁後端開發Python教學python程式碼畫出愛心曲線
python程式碼畫出愛心曲線Apr 02, 2018 am 11:09 AM
python愛心

Python的拿手好戏是解决数据分析和可视化问题,本篇文章给大家分享的是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 可以說是其中的一個簡單實用的工具。 ###

以上是python程式碼畫出愛心曲線的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境