pythonで最も美しいOPPAIを描いた人が優勝

#お酒飲みながら描いた、後悔はしてない
数学って美しいよねって話。

【2020年7月16日更新】
規制に引っかかっちゃったんでOPPAI、new輪、ティ首に変更

##結果
数学でOPPAIを書きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273596/bd4d5244-9d13-1223-7ac2-a5b5f74a0eca.png)

色をつけます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273596/5fe7097e-e43f-4040-f15a-2683fd92baad.png)

new輪をつけて完成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273596/de7089ef-6632-eab4-2972-612ba9d91a45.png)


##コード
###数学でOPPAIを書きます
```py.py
import numpy as np
import matplotlib.pyplot as plt

def oppai(y):
    x_1 = (1.5*np.exp(-0.62*(y-0.16)**2))/(1+np.exp(-20*(5*y-1)))
    x_2 = (1.5+0.8*(y-0.2)**3)*(1+np.exp(20*(5*y-1)))**-1
    x_3 = (1+np.exp(-(100*(y+1)-16)))
    x_4 = (0.2*(np.exp(-(y+1)**2)+1))/(1+np.exp(100*(y+1)-16))
    x_5 = (0.1/np.exp(2*(10*y-1.2)**4))
    x = x_1+(x_2/x_3)+x_4+x_5
    return x

def plot_oppai(x, y):
    plt.title('oppai')
    plt.axes().set_aspect('equal', 'datalim')
    plt.grid()
    plt.plot(x, y, 'black')
    plt.show()

def main():
    y = np.arange(-3, 3 + 0.01, 0.01)
    x = oppai(y)
    plot_oppai(x, y)

if __name__ == '__main__':
    main()
```

###良さげな画像からカラーコードを取得します
ここに良さげな画像をアップロード(例：kirara.png)
https://www.peko-step.com/tool/getcolor.html
カラーコードを取得
肌色：#F5D1B7
ティ首：#C87B6D
new輪：#E29577

###色をつけます
oppaiを弄るだけです。

```py.py
def plot_oppai(x, y):
    plt.title('oppai')
    plt.axes().set_aspect('equal', 'datalim')
    plt.grid()
    plt.plot(x, y, '#F5D1B7')
    plt.fill_between(x, y, facecolor='#F5D1B7', alpha=0.8)#肌
    plt.axvspan(1.52, 1.59, 0.51, 0.53, color = '#C87B6D')#ティ首
    plt.axvspan(0, 0.18, 0.05, 0.5, color = '#F5D1B7')#補正
    plt.show()
```


###new輪を描いて完成
こいつもoppaiを弄るだけです。


```py.py
import matplotlib.patches as patches
def plot_oppai(x, y):
    plt.title('oppai')
    plt.axes().set_aspect('equal', 'datalim')
    plt.grid()
    plt.plot(x, y, '#F5D1B7')
    plt.fill_between(x, y, facecolor='#F5D1B7', alpha=0.8)#肌
    w=patches.Wedge(center=(1.55, 0.1),r=0.2,theta1=120,theta2=240,color='#E29577')#new輪
    ax = plt.axes()
    ax.add_patch(w)
    plt.axvspan(1.52, 1.59, 0.51, 0.53, color = '#C87B6D')#ティ首
    plt.axvspan(0, 0.18, 0.05, 0.5, color = '#F5D1B7')#補正
    plt.show()
```

###最終的なコード
```py.py
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches


def oppai(y):
    x_1 = (1.5*np.exp(-0.62*(y-0.16)**2))/(1+np.exp(-20*(5*y-1)))
    x_2 = (1.5+0.8*(y-0.2)**3)*(1+np.exp(20*(5*y-1)))**-1
    x_3 = (1+np.exp(-(100*(y+1)-16)))
    x_4 = (0.2*(np.exp(-(y+1)**2)+1))/(1+np.exp(100*(y+1)-16))
    x_5 = (0.1/np.exp(2*(10*y-1.2)**4))
    x = x_1+(x_2/x_3)+x_4+x_5
    return x

def plot_oppai(x, y):
    plt.title('oppai')
    plt.axes().set_aspect('equal', 'datalim')
    plt.grid()
    plt.plot(x, y, '#F5D1B7')
    plt.fill_between(x, y, facecolor='#F5D1B7', alpha=0.8)#肌色
    w=patches.Wedge(center=(1.55,0.1),r=0.2,theta1=120,theta2=240,color='#E29577')#new輪
    ax = plt.axes()
    ax.add_patch(w)
    plt.axvspan(1.52, 1.59, 0.51, 0.53, color = '#C87B6D')#ティ首
    plt.axvspan(0, 0.18, 0.05, 0.5, color = '#F5D1B7')#補正
    
    plt.show()

def main():
    y = np.arange(-3, 3 + 0.01, 0.01)
    x = oppai(y)
    plot_oppai(x, y)

if __name__ == '__main__':
    main()
```

##まとめ
数学って美しい
ティ首もnew輪も、好きな色に変えて遊んでくだせぇ
ピンクのティ首が好きって人はLGTMを、いやいや、黒いティ首の方が興奮するやろって人はフォローお願いします

##参考
・これのおかげ
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4798055433/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4798055433&linkCode=as2&tag=samuragouchim-22&linkId=140e651addc83e83424fa48340ab7898"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4798055433&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=samuragouchim-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=samuragouchim-22&l=am2&o=9&a=4798055433" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a target="_blank" href="https://www.amazon.co.jp/gp/product/4798055433/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4798055433&linkCode=as2&tag=samuragouchim-22&linkId=9b223c7962bbdcd55ceb8266611cc3c0">Matplotlib&amp;Seaborn実装ハンドブック (Pythonライブラリ定番セレクション)</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=samuragouchim-22&l=am2&o=9&a=4798055433" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

・私のバイブル
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B07DVY4H3M/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B07DVY4H3M&linkCode=as2&tag=samuragouchim-22&linkId=94855b99784ba51b83344ea8977ad6eb"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B07DVY4H3M&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=samuragouchim-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=samuragouchim-22&l=am2&o=9&a=B07DVY4H3M" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a target="_blank" href="https://www.amazon.co.jp/gp/product/B07DVY4H3M/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B07DVY4H3M&linkCode=as2&tag=samuragouchim-22&linkId=4f6141efa34ff0e6d043bc3b80740ed8">体系的に学ぶ 安全なWebアプリケーションの作り方 第2版［固定版］　脆弱性が生まれる原理と対策の実践</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=samuragouchim-22&l=am2&o=9&a=B07DVY4H3M" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />


[・全国の一流インテグラーが創造したOPPAI関数をPythonで再現してみた](https://qiita.com/k_eita/items/abf851d1b9c9a69a4faa)
[・指定範囲を塗り潰す関数]
(https://python.atelierkobato.com/fill_between/)