ゆうは

わかりたいことを深堀り

matplotlibを使って複数の円をつくる

Pythonのmatplotlibを使ったらGenerative Artっぽいことができる?

ということでやってみました。

matplotlibを使う

Pythonはツールが充実しているのでGenerativeArt用のライブラリとかありそうですが、matplotlibを使いました。

math.cosとmath.sinを使って円をつくり、randomで散りばめています。

matplotlibを使って複数の円をつくる

円の個数は50個で円の幅は10にしています。
色はmatplotlibが自動で付けているものです。

コードはこちら↓

import matplotlib.pyplot as plt
import math
import random

w=10
N=50

for _ in range(N):
    xp=random.uniform(-w,w)
    yp=random.uniform(-w,w)

    x = []
    for i in range(360):
        i = math.cos(math.radians(i))+xp
        x.append(i)

    y = []
    for i in range(360):
        i = math.sin(math.radians(i))+yp
        y.append(i)
    
    plt.plot(x,y)

plt.axis('equal')
plt.grid(color="0.8")
plt.show()

yuuuha.hatenablog.com

円の半径をランダムにする

次は、円の幅を変えてみます。

円の幅を変えるにはcos、sinに半径をかけます。

matplotlibを使って複数の円をつくる

コードはこちら↓

import math
import random

import matplotlib.pyplot as plt

w = 10
N = 50

for _ in range(N):
    xp = random.uniform(-w, w)
    yp = random.uniform(-w, w)
    r = random.random() * 3
    x = []
    for i in range(360):
        i = math.cos(math.radians(i)) * r + xp
        x.append(i)

    y = []
    for i in range(360):
        i = math.sin(math.radians(i)) * r + yp
        y.append(i)

    plt.plot(x, y)

plt.axis("equal")
plt.grid(color="0.8")
plt.show()

変数「r」が半径の幅を変えているものです。

matplotlibを使えば、GenerativeArtができそうです。

しかし、かっこいいものができるのは、まだまだかかりそうです。

yuuuha.hatenablog.com