1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonとnumpyとmatplotlibでできる愛の告白

Posted at

はじめに

本ページは恋愛とは無縁の方には必要のないものとなっております。
心に思う人がいない方は即刻作ることをおすすめする。
将来の自分のために残すものなので乱雑なのはご容赦いただきたい。

ハート関数

y = x^\frac{2}{3}+\frac{4}{5}\sqrt{\frac{9}{10}-x^2}\sin(\alpha x\pi)  \alphaは定数

この数式をグラフにするとハートになるらしい。

実際にコードに起こしてみた

■コード

codo.py
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()

■それぞれの意味

s.py
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.py
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の関数はこの式内では使えない。
l.py
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解説サイトを見ればよい。
一点だけ補足説明。

i.py
plt.plot(x,y,color="r") #右半分
plt.plot(-x,y,color="r") #左半分

この部分は片方だけだと半分かけたハートになる。

t.py
fig = plt.figure()
ax = fig.add_subplot(111)
|
|
ax.set_aspect("equal")

ここでは出力されるグラフのアスペクト比を変更している。

■出力されたグラフ
最終的に次のようなグラフが出力されるはずだ。
ハートグラフ

最後に

これで準備は万端だ。
しかし、本番前にしっかりと忘れてはいけないことがある。
一つは相手のパソコンにライブラリがインストールされているか。
もう一つは、多くの場合こんな回りくどいことをするよりも、直接伝えたほうが成功率は高いということ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?