はじめに
本ページは恋愛とは無縁の方には必要のないものとなっております。
心に思う人がいない方は即刻作ることをおすすめする。
将来の自分のために残すものなので乱雑なのはご容赦いただきたい。
ハート関数
y = x^\frac{2}{3}+\frac{4}{5}\sqrt{\frac{9}{10}-x^2}\sin(\alpha x\pi) \alphaは定数
この数式をグラフにするとハートになるらしい。
実際にコードに起こしてみた
■コード
import math
import numpy as np
import matplotlib.pyplot as plt
p = math.pi
x = np.linspace(-1,1,1000)
y = x**(2/3) + 4/5 * np.sqrt(9/10 - x**2) * np.sin(100*x*p)
fig = plt.figure()
ax = fig.add_subplot(111)
plt.ylim(-0.75,1.5)
plt.xlim(-1,1)
plt.title("I LOVE YOU",fontsize=24)
plt.plot(x,y,color="r")
plt.plot(-x,y,color="r")
ax.set_aspect("equal")
plt.show()
■それぞれの意味
import math
import numpy as np
import matplotlib.pyplot as plt
今回使うライブラリであるmath, numpy, matplotlibをimportしている。
これらの解説は以下のサイトを見るとよい。
1.math:https://marusankakusikaku.jp/python/standard-library/math/
2.numpy:https://qiita.com/hassiweb/items/907033618070958fb708
3.matplotlib:https://ai-inter1.com/python-matplotlib/
p = math.pi #pにπを代入
x = np.linspace(-1,1,1000) #横軸範囲指定
y = x**(2/3) + 4/5 * np.sqrt(9/10 - x**2) * np.sin(100*x*p)
x = np.linspace(-1,1,1000) |
---|
-1から1までの間を。等間隔で1000個の点に分割した点を作成して、変数xに代入する。 |
y = x**(2/3) + 4/5 * np.sqrt(9/10 - x**2) * np.sin(100 * x * p) |
---|
ハート関数をpythonでの式に置き換えたもの。 |
注意:mathの関数はこの式内では使えない。 |
plt.ylim(-0.75,1.5)
plt.xlim(-1,1)
plt.title("I LOVE YOU",fontsize=24)
plt.plot(x,y,color="r")
plt.plot(-x,y,color="r")
基本的に上記のmatplotlib解説サイトを見ればよい。
一点だけ補足説明。
plt.plot(x,y,color="r") #右半分
plt.plot(-x,y,color="r") #左半分
この部分は片方だけだと半分かけたハートになる。
fig = plt.figure()
ax = fig.add_subplot(111)
|
|
ax.set_aspect("equal")
ここでは出力されるグラフのアスペクト比を変更している。
■出力されたグラフ
最終的に次のようなグラフが出力されるはずだ。
最後に
これで準備は万端だ。
しかし、本番前にしっかりと忘れてはいけないことがある。
一つは相手のパソコンにライブラリがインストールされているか。
もう一つは、多くの場合こんな回りくどいことをするよりも、直接伝えたほうが成功率は高いということ。