brunch

아빠랑 동심으로 돌아가 그림 그리기

by 박정수

어릴 때 우리가 도화지에 그림을 그리듯, 오늘은 손이나 옷, 방바닥에 크레용이나 물감이 묻지도 않고, 도화지에 번지지도 않는 단순히 자판만 만드는 그래프를 소개하려 해. 그간 For Loop이 코딩의 전무인지 알았겠지만 코딩은 그래프는 물론이고 인공지능으로 요즘 핫한 주식투자나 코인 가격도 예측을 할 수 있고, 자율주행 등 사용이 안 되는 곳이 없어. 너희가 젊으니까 하고 싶은 만큼 무한한 가능성이 열려있어. 옛날 대우그룹 김우중 회장님이 "세상은 넓고 할 일은 많다"라는 책을 저술하셨는데, 아빠는 "코딩의 세계는 더 넓고, 평생 공부해도 부족하다"라고 하고 싶어.



코딩을 배우는 초보자들은 늘 for loop와 if문을 반복하며 기초를 다집니다. 하지만 어느 순간, 단순한 반복문이 그림이 되고, 데이터가 색을 입히면 작품이 됩니다. 파이썬의 그래프 세계는 바로 그 시작입니다.

Matplotlib은 연필과 붓 같은 기본 도구입니다. 선 그래프, 막대그래프를 그리며 데이터의 윤곽을 잡습니다.

Seaborn은 색채와 스타일을 더해주는 팔레트입니다. 같은 데이터도 훨씬 세련되고 아름답게 표현됩니다.

Plotly는 인터랙티브 한 캔버스입니다. 마우스로 확대하고 움직이며, 데이터와 직접 대화할 수 있습니다.

그리고 프랙털 같은 고급 그래픽은, 코딩이 단순한 도구를 넘어 예술이 될 수 있음을 보여줍니다.

여러분이 지금은 단순한 선 하나를 그리지만, 언젠가는 데이터의 우주를 탐험하는 거대한 그림을 그릴 수 있습니다. 코딩은 단순한 기술이 아니라, 세상을 이해하는 또 하나의 언어이자 예술입니다.


import matplotlib.pyplot as plt

ages = [10, 11, 12, 13, 14]

heights = [130, 135, 142, 148, 155]

plt.plot(ages, heights, marker='o', linestyle='--', color='blue')

plt.title("Height Growth")

plt.xlabel("Age")

plt.ylabel("Height (cm)")

plt.grid(True)

plt.savefig("line_chart.png", dpi=300)

plt.show()


이렇게 생긴 코드로 다음과 같은 그림을 만들 수 있습니다.


line_chart.png 아이의 키가 잘 크고 있죠?


그리고 이 그래프는 다음과 같이 변화를 줄 수도 있습니다.

seaborn.png

그리고 "산점도"라는 그래프도 돼요. 아니 상상하는 만큼 모든 그림이 그려져요.


scatter.png


그리고 정말 이 그래프도 그릴 수 있어요. 짠~~

아빠가 실제로 파이썬 코드로 그린 그림입니다.

import numpy as np

import matplotlib.pyplot as plt

# Mandelbrot fractal

def mandelbrot(h, w, max_iter=50):

x = np.linspace(-2.0, 1.0, w)

y = np.linspace(-1.5, 1.5, h)

X, Y = np.meshgrid(x, y)

C = X + 1j * Y

Z = np.zeros_like(C)

div_time = np.zeros(C.shape, dtype=int)


for i in range(max_iter):

Z = Z**2 + C

diverge = np.abs(Z) > 2

div_now = diverge & (div_time == 0)

div_time [div_now] = i

Z [diverge] = 2


return div_time


plt.figure(figsize=(8, 8))

plt.imshow(mandelbrot(600, 600), cmap="inferno")

plt.title("Mandelbrot Fractal")

plt.axis("off")


# 저장

plt.savefig("mandelbrot_fractal2.png", dpi=300)

plt.show()


copy and paste만으로 아래 그래프를 그릴 수 있어요. 그것도 수초만에... (물론 컴퓨성 성능에 따라 오래 걸릴 수도 있어요..)

mandelbrot_fractal2.png 프렉탈 이미지

말 돼요? 좀 되죠? 그리고 크게 숨을 세 번 쉬고 다음 링크를 클릭하거나 "프렉탈 파이썬" 등으로 검색해서 "이미지"를 선택하면...


기절할 정도로 환상적인 그림들이 많아. 한번 빠져 보라고. 아빠도 같이 프렉탈을 공부하고 Coding 도 해줄게. (링크가 안 눌러지면 역시 "복붙"하면 돼)


create a fractal python - 검색


이번엔 "동영상"을 선택하면 프렉탈이 뭔가도 성명을 들을 수 있어.


코딩, 알수록 편리해지고, 환상적이고, 신기한 세상이야. 다음 주를 기대해.

keyword
이전 11화둘째의 도자기 유약 레시피, 엑셀 말고 파이썬으로!