파이썬 프로그래밍 안산 기원 마크를 만들거야.
4492 단어 파이썬matplotlib시각화numpy
안산 기원 마크
프로그램으로 만들어 보자! ! !
동영상은 여기
htps //w w. 요츠베. 코 m / m 베 d / 5 우 7M65 세 3c
그럼
만드는 방법은
numpy와 matplotlib를 사용하여
마크를 그려갑니다.
widget도 사용
부끄럽게 변형할 수 있도록 합니다.
소스는 이쪽
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact, FloatSlider, IntSlider,Select
%matplotlib inline
r = IntSlider(min=1, max=8, step=1, value=5)
t = FloatSlider(min=1.0, max=1.5, step=0.1, value=1.0)
c = Select(options=['black', 'red', 'blue','green'],
value='black',description='coler : ',disabled=False)
@interact(r=r,t=t,c=c)
def plot_man(r,t,c):
plt.figure(figsize=(10,9))
plt.axes().set_aspect('equal', 'datalim')
# circle 1
x = [np.sin(np.radians(_x))*r for _x in np.linspace(-180,180,721)]
y = [np.cos(np.radians(_y))*r*t for _y in np.linspace(-180,180,721)]
plt.plot(x, y, c)
# circle 2
x2 = [i*0.7 for i in x]
y2 = [i*0.7 for i in y]
plt.plot(x2, y2, c)
# line
x3 = [0,0]
y3 = [min(y)*1.25,max(y)*1.25]
plt.plot(x3, y3, c)
# lines
x4 = [i*1.2 for i in x]
y4 = [i*1.2 for i in y]
for i in range(16):
x5 = [x[i*45],x4[i*45]]
y5 = [y[i*45],y4[i*45]]
plt.plot(x5, y5, c)
plt.xlim([-20,20])
plt.ylim([-20,20])
plt.show()
jupyter notebook에서
움직일 수 있습니다.
결과는 이렇게 됩니다.
r로 원의 반경 변경
t로 타원의 배율 변경
color로 색상을 변경합니다.
타원은
원의 종횡 방향을 n배로 하는 것으로 실현하고 있습니다.
그래서
세로 방향이면
x의 값은 그대로
y의 값의 배율을 바꾸면
세로 타원이 됩니다.
이번 방식에서는
우선 반경을 정하여 원을 준비합니다.
안쪽의 원은 첫 번째 원의 배율을 바꾼 것뿐입니다.
세로 막대는 x의 값이 0이고 y의 값을 변경하여
깨닫고 외부 막대는
큰 원을 준비하십시오.
첫 번째 원에서 외부 원으로 향하는 값으로
그려져 있습니다.
일단 16개가 되는 것 같아서
22.5도의 각도가 되는 계산으로
좌표를 찾고 있습니다.
모두 더하면
안산 마크가 됩니다! ! ! ! ! ! !
모처럼이기 때문에
GIF도 만들어 봅시다.
matplotlib에서는 애니메이션 기능으로
mp4와 gif도 만들 수 있습니다.
환경에 따라 움직이지 않을 수도 있습니다.
이번에는
이미지를 많이 생성하고
무리하게 GIF에 떨어뜨립니다.
소스는 이쪽
from PIL import Image, ImageDraw, ImageFont
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact, FloatSlider, IntSlider,Select
import os
data_dir = 'anzan_data/'
if not os.path.exists(data_dir):
os.makedirs(data_dir)
for a in range(30):
plt.figure(figsize=(3,3))
plt.axes().set_aspect('equal', 'datalim')
plt.tick_params(labelbottom=False,
labelleft=False,
labelright=False,
labeltop=False)
plt.tick_params(bottom=False,
left=False,
right=False,
top=False)
plt.xlim([-20,20])
plt.ylim([-20,20])
c ='black'
n = (np.abs(np.sin(a))+1)
# circle 1
x = [np.sin(np.radians(_x))*8 for _x in np.linspace(-180,180,721)]
y = [np.cos(np.radians(_y))*8*n for _y in np.linspace(-180,180,721)]
plt.plot(x, y, c)
# circle 2
x2 = [i*0.7 for i in x]
y2 = [i*0.7 for i in y]
plt.plot(x2, y2, c)
# line
x3 = [0,0]
y3 = [min(y)*1.25,max(y)*1.25]
plt.plot(x3, y3, c)
# lines
x4 = [i*1.2 for i in x]
y4 = [i*1.2 for i in y]
for i in range(16):
x5 = [x[i*45],x4[i*45]]
y5 = [y[i*45],y4[i*45]]
plt.plot(x5, y5, c)
file_name = data_dir + 'tmp_{0:02}.png'.format(a)
plt.savefig(file_name)
images = []
for a in range(30):
file_name = data_dir + 'tmp_{0:02}.png'.format(a)
img = Image.open(file_name)
images.append(img)
gif_name = 'anzan.gif'
images[0].save(gif_name,save_all=True, append_images=images[1:], optimize=False, duration=2, loop=0)
jupyter notebook에서 실행하면
안산 기원 마크가 notebook이 있는 디렉토리에
만들어집니다.
결과는
예
빌론 빌론
기분 좋은 GIF가 생성됩니다.
꼭 관심있는 분은
시도해보십시오.
그럼
Reference
이 문제에 관하여(파이썬 프로그래밍 안산 기원 마크를 만들거야.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/otupy/items/437219188e1fcb7d8c32텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)