본문 바로가기

쓰레기장""

[엄마친구아들] 그거 시간표 안될텐데요?

https://www.youtube.com/watch?v=4M8Xv_GOUsc

요즘 보는 드라마의 한장면에서 주인공이 코딩으로 계획표를 만드는 부분이 나왔다. (youtube 제목도 코딩으로 생활 꼐획표 짜는 상위 0.01% 천재..)

보자마자 "저거 안될텐데?" 라는 생각부터 들기 시작한건...직업병인가?

 

일단 시작부터 python 문법인데, 파일명이 indexj.jsp 다. (뭐 이런건 사소한거니 넘어가고)

 

 

드라마에서 만든 계획표... 파이썬으로 이거 못만들어요...ㅋㅋ (그래픽 모듈을 써야 가능)

 

 

 

일단 matplotlib 을 기준으로 만들어보았다. 간단하게 파이차트를 활용해서 만들면 되지 않을까 싶었다.

import matplotlib.pyplot as plt

activities = [
    "꿈나라", "아침", "게임하기", "멍때리기", "점심", 
    "TV보기", "낮잠자기", "만화방 가기", "자유시간", "명상"
]
start_times = [0, 5, 6, 9, 11, 13, 15, 18, 20, 21]
end_times = [5, 6, 9, 11, 13, 15, 18, 20, 21, 24]

durations = [end - start for start, end in zip(start_times, end_times)]

colors = [
    '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', 
    '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'
]

fig, ax = plt.subplots()
ax.pie(durations, labels=activities, startangle=90, colors=colors, counterclock=False, wedgeprops={'edgecolor': 'black'})

centre_circle = plt.Circle((0, 0), 0.30, fc='white')
fig.gca().add_artist(centre_circle)


ax.axis('equal')  


plt.text(0, 0, 'PLAY', ha='center', va='center', fontsize=18, fontweight='bold')

plt.show()

 

결과물.

구분은 되지만, 시간 표기가 없어서. 심심함 느낌이 난다. (계획표가 아닌 그냥 파이그래프로 보인다.)

 

 

시간 표기는 gpt의 도움을 받아서 해보았다.

import numpy as np
import matplotlib.pyplot as plt


activities = [
    "꿈나라", "아침", "게임하기", "멍때리기", "점심", 
    "TV보기", "낮잠자기", "만화방 가기", "자유시간", "명상"
]
start_times = [0, 6, 7, 9, 10, 12, 15, 17, 19, 20]
end_times = [6, 7, 9, 10, 12, 15, 17, 19, 20, 24]


durations = [end - start for start, end in zip(start_times, end_times)]


colors = [
    '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', 
    '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'
]


fig, ax = plt.subplots()
wedges, texts = ax.pie(durations, startangle=90, colors=colors, counterclock=False, wedgeprops={'edgecolor': 'black'})


for i, text in enumerate(texts):
    angle = (start_times[i] + end_times[i]) / 2 * 360 / 24
    x = 0.6 * np.cos(np.deg2rad(-angle + 90)) 
    y = 0.6 * np.sin(np.deg2rad(-angle + 90)) 
    ax.text(x, y, activities[i], ha="center", va="center", fontsize=10)


for i in range(24):
    angle = i * 360 / 24
    x = 1.1 * np.cos(np.deg2rad(-angle + 90))
    y = 1.1 * np.sin(np.deg2rad(-angle + 90))
    ax.text(x, y, f'{i}', ha="center", va="center", fontweight="bold")


centre_circle = plt.Circle((0, 0), 0.30, fc='white')
fig.gca().add_artist(centre_circle)


ax.axis('equal')


plt.text(0, 0, 'PLAY', ha='center', va='center', fontsize=18, fontweight='bold')

plt.show()

 

최종 결과물. 흠.. 어느 정도 괜찬은 느낌이 난다. 아마 색상만 더 입히면 쓸만할지도?