CORDEA blog

Android applications engineer

matplotlibと円周率でロゴ的なもの

Wolfman Alphaのブログ記事を見ていたらふと円周率を使って何か作りたくなったのでmatplotlibを使って書いてみた。

結果として出来たものはこんな感じ

f:id:CORDEA:20140923181237p:plain,h200

桁数に応じて距離が遠くなり、数字に応じて(0-9)円が大きくなります。
桁数が増えるほど円が大きくなるよう調整しているのは外側に行くほど空白が増えるのが少し気に入らなかったからです。

円形でよさ気なものが出来たのでロゴにでも使おうかなぁと思っております。
 

コード

Gistにもあります。

import numpy as np
import matplotlib.pyplot as plt

pi="14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214"

lst = []
ind = []
for n in range(len(pi)):
    lst.append(int(pi[n]))
    ind.append(int(n+1))

lst = np.array(lst)
ind = np.array(ind)

r      = 2 * ind
theta  = (np.pi * ind) / 10
area   = 120 * lst * (ind * 0.012)
colors = theta

ax = plt.subplot(111, polar=True)
c  = plt.scatter(theta, r, c=colors, s=area, cmap=plt.cm.hsv, edgecolors='#636363')
c.set_alpha(0.75)

ax.spines['polar'].set_visible(False)
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)

plt.show()