0
0

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 3 years have passed since last update.

擬似フラクタル図形をPythonを使って描いてみた

Last updated at Posted at 2020-04-21

今日は落書きで書いた図形をプログラム(matplotlib)で描いてみようと思い,Pythonを使って描いてみた。

今回使うプログラム
fractal.py
import matplotlib.pyplot as plt
import matplotlib.collections as mc
import numpy as np
import math

def return_point(p1, p2):
    point = (p2-p1)*0.08 + p1
    return point

N = 1000
x = np.linspace(-1, 1, N)

x_point = [0, 100, 200]
y_point = [0, math.sqrt(3)*100, 0]
for i in range (N):
    new_x_point = return_point(x_point[i], x_point[i+1])
    new_y_point = return_point(y_point[i], y_point[i+1])
    x_point.append(new_x_point)
    y_point.append(new_y_point)

fractal = [[(x_point[i], y_point[i]), (x_point[i+1], y_point[i+1])] for i in range(N)]

lc = mc.LineCollection(fractal, colors='#333333', linewidths=1, antialiased=True)


fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(1,1,1)

# ↓非本質的な設定
ax.set_axis_bgcolor('#f3f3f3')
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['left'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['bottom'].set_visible(False)
plt.tick_params(labelbottom=False, labelleft=False, labelright=False, labeltop=False)
# ↑非本質的な設定

ax.add_collection(lc)
ax.autoscale()
plt.savefig('./fractal.png')

7行目point = (p2-p1)*0.08 + p10.08の値を変えてみるのも一興.

実行後

fractal.png

あら,美しい(CDのジャケットにありそう)
(ところで,何か名前がついていたらコメント欄で教えてください)

#####【追記】
厳密にはフラクタル図形でないと考え,タイトルを"フラクタル図形をPythonを使って描いてみた"から"擬似フラクタル図形をPythonを使って描いてみた"に変更しました。

参考にした記事

ありがとうございました。

pythonでフラクタル図形を作成part1(シェルピンスキーのギャスケット)
https://qiita.com/okakatsuo/items/f2e79fc501ed9f799734

Matplotlibで複数の線分を描画する方法
https://omedstu.jimdofree.com/2019/10/04/matplotlibで複数の線集合を描画する方法/

matplotlibのめっちゃまとめ
https://qiita.com/nkay/items/d1eb91e33b9d6469ef51#2-グラフaxesの作成

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?