LoginSignup
6
4

More than 5 years have passed since last update.

matplotlibを使って小学校の頃一度は作ったであろう幾何学模様をグラフで表現する

Posted at

突然ですが皆さんこの模様をご存知ですか?

IMG_4149.jpg
一度は見たことあるはず

つい懐かしくなってさらっと書いちゃいました(笑)。
書いた後に塗りつぶしてアレンジしたりと、応用が効いて当時は楽しんでいた記憶があります。図工の時間で作ったっけ?

IMG_4150.jpg
チェック模様の音〜(水素の音風に)

いつか完璧に綺麗な模様を描きたいと強く願っていました。そしてついにPythonのグラフ描画ライブラリmatplotlibを使って簡単に実装できたのでご紹介します。

※この模様の正式名称はなんだろ...読者の方で知ってる方が居ましたらコメントお願いします!(そもそも作ったことある??)

まずはシンプルに

先の画像と同じデザインのグラフを描画してみます。

flow_glaph.py
import matplotlib.pyplot as plt

LINES = 20

j = LINES
for i in range(0, LINES + 1, 1):
    plt.plot([i, 0], [0, j])
    j -= 1

plt.show()

出力がこちら。

Figure_1.png

デフォルトでは線の色が統一されてないうえに目がチカチカするので黒に統一しましょう。
ここから先は線の描画部分のみ記載していきます。

# 線を黒に変更
plt.plot([i, 0], [0, j], color = '#000000')

Figure_1.png

こちらの方が見やすいですね。

2つ組み合わせて目の形に

先のグラフの対角線上にもう1つ同じものを作成して目の形を作ってみましょう。

# 左下に表示
plt.plot([i, 0], [0, j], color = '#000000')
# 右上に表示
plt.plot([i, LINES], [LINES, j], color = '#000000')

Figure_1.png

for文で回して描画するので一行だけで増やすことができます。

思い切って4つ作る

さらに2つ増やして4つ作ってみます。

# 左下に表示
plt.plot([i, 0], [0, j], color = '#000000')
# 左上に表示
plt.plot([0, i], [i, LINES], color = '#000000')
# 右下に表示
plt.plot([LINES, j], [j, 0], color = '#000000')
# 右上に表示
plt.plot([i, LINES], [LINES, j], color = '#000000')

Figure_1.png

複雑怪奇な模様もPython × matplotlibなら簡単に表現できますね!

線の数を変更してみる

デフォルトでは20本の線を引くように指定しています。
変更するにはLINESの値を増減させてみてください。

LINES = 5の場合

Figure_1.png

見違えるほどシンプルになりました(笑)。
四角形が回転しているように見えますね。

LINES = 100の場合

Figure_1.png

細かすぎて見えない...
5本の時と比較すると20倍に線の数が増えたので描画に数秒ほど時間がかかりました。

まとめ

  • 手書きとプログラムどっちで書いても楽しい
  • 線や模様の数を容易に変更できるのでプログラムなら超時短につながる
  • 実用性は皆無だけど暇つぶしに作ってみると割と面白い
  • 失敗から生まれる未知な模様の発見↓

Figure_1.png
某大手スポーツメーカーのロゴを彷彿する模様(

最後にこの模様の名前を知っている方はコメントしていただくと幸いです。

6
4
2

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
6
4