matplotlibと円周率でロゴ的なもの
Wolfman Alphaのブログ記事を見ていたらふと円周率を使って何か作りたくなったのでmatplotlibを使って書いてみた。
結果として出来たものはこんな感じ
桁数に応じて距離が遠くなり、数字に応じて(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()
参考
Introducing Tweet-a-Program—Wolfram|Alpha Blog
Pi - Wolfram|Alpha
pie_and_polar_charts example code: polar_scatter_demo.py — Matplotlib 1.4.0 documentation
Adding new scales and projections to matplotlib — Matplotlib 1.4.0 documentation
python - turn off axis border for polar matplotlib plot - Stack Overflow
python - Hiding axis text in matplotlib plots - Stack Overflow
Python scatter plot. Size and style of the marker - Stack Overflow