利用python畫一顆心的方法示例
前言
Python一般使用Matplotlib制作統(tǒng)計圖形,用它自己的說法是‘讓簡單的事情簡單,讓復(fù)雜的事情變得可能'。用它可以制作折線圖,直方圖,條形圖,散點(diǎn)圖,餅圖,譜圖等等你能想到的和想不到的統(tǒng)計圖形,這些圖形可以導(dǎo)出為多種具有出版質(zhì)量的格式。此外,它和ipython結(jié)合使用,確實(shí)方便,誰用誰知道!本文將介紹利用python中的matplotlib畫一顆心,感興趣的朋友們下面來一起看看吧。
安裝matplotlib
首先要安裝matplotlib
pip install matplotlib
windows用戶可以去官網(wǎng)下載安裝。官網(wǎng)看到matpltlib的作者John Hunter (1968-2012)剛?cè)ナ啦痪?,在此感謝他創(chuàng)造了這樣一個強(qiáng)大的繪圖工具。
上代碼
#!/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)
效果是這個樣子,挺有意思的:

總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學(xué)習(xí)或者使用python能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
tensorflow如何將one_hot標(biāo)簽和數(shù)字(整數(shù))標(biāo)簽進(jìn)行相互轉(zhuǎn)化
這篇文章主要介紹了tensorflow如何將one_hot標(biāo)簽和數(shù)字(整數(shù))標(biāo)簽進(jìn)行相互轉(zhuǎn)化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
python對 MySQL 數(shù)據(jù)庫進(jìn)行增刪改查的腳本
這篇文章主要介紹了python對 MySQL 數(shù)據(jù)庫進(jìn)行增刪改查的腳本,幫助大家更好的利用python處理數(shù)據(jù)庫,感興趣的朋友可以了解下2020-10-10
python實(shí)現(xiàn)簡單的tcp 文件下載
這篇文章主要介紹了python如何實(shí)現(xiàn)簡單的tcp文件下載,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09
python實(shí)現(xiàn)自動發(fā)送報警監(jiān)控郵件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動發(fā)送報警監(jiān)控郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
python調(diào)用百度AI接口實(shí)現(xiàn)人流量統(tǒng)計
這篇文章主要介紹了python調(diào)用百度AI接口實(shí)現(xiàn)人流量統(tǒng)計,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
Python錯誤NameError:name?'X'?is?not?defined的解決方法
這篇文章主要給大家介紹了關(guān)于Python錯誤NameError:name?‘X‘?is?not?defined的解決方法,這是最近工作中遇到的一個問題,文中通過實(shí)例代碼將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03

