ホームページ  >  記事  >  バックエンド開発  >  Pythonを使ったハートの描き方例

Pythonを使ったハートの描き方例

高洛峰
高洛峰オリジナル
2017-02-03 16:02:461857ブラウズ

前書き

Python は通常、Matplotlib を使用して統計グラフィックを生成します。それは、それ自体の言葉で言えば、「単純なものを単純にし、複雑なものを可能にする」ものです。これを使用して、折れ線グラフ、ヒストグラム、棒グラフ、散布図、円グラフ、スペクトル グラフ、その他の思いつく限りの統計グラフィックや予想外のグラフィックを作成できます。これらのグラフィックは、さまざまな出版物品質の形式にエクスポートできます。また、ipythonと組み合わせて使うと本当に便利です!この記事では、Python で matplotlib を使用してハートを描画する方法を紹介します。興味のある方は以下をご覧ください。

matplotlibをインストールします

まずmatplotlibをインストールする必要があります

pip install matplotlib

Windowsユーザーは公式Webサイトにアクセスしてダウンロードしてインストールできます。公式ウェブサイトを見ると、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 を使用してハートを描く方法のその他の例については、PHP 中国語 Web サイトの関連記事に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。