Processor

[라즈베리파이4] drawnow-0.72.5 설치하기

작성자 임베디드코리아 작성일25-12-14 00:15 조회129회 댓글0건
■ drawnow는 반복문 속에서 사용되는데, 그리려는 plot에 대해서 drawnow가 호출된다면
  그리려고 했던 모든 plot을 다 그리게 된다.
    ▶ 매우 빠르게 계속 그려주면 움직이는 그림, 애니메이션 처럼 보일 것이다.
    ▶ 비슷하게 python 라이브러리 중, matplotlib를 이용한 drawnow[1] 라이브러리가 있다.
    ▶ Python drawnow 라이브러리는 사전에 plot을 그리도록 선언한 함수를 drawnow함수가 호출해야한다.

1. 디렉토리를 만들고 접근하여 drawnow-0.72.5를 다운로드 한다.
    $ mkdir Drawnow
    $ cd Drawnow
    $ w get https://pypi.python.org/packages/source/d/drawnow/drawnow-0.72.5.tar.gz

2. 압축을 해제하면, drawnow-0.72.5 디렉토리가 생성된다.
    $ tar xzf drawnow-0.72.5.tar.gz

3. 생성된 디렉토리에 접근하여 setup.py를 열어서 수정한다.
    $ cd drawnow-0.72.5
    $ vi setup.py
    24 #    use_2to3=True,    <--- 주석 처리하거나 삭제한다.

4. drawnow-0.72.5를 설치한다.
    $ sudo python setup.py install
        --
        ;
        ;
Using /usr/lib/python3/dist-packages
Finished processing dependencies for drawnow==0.72.5
----------< 예제  >-------------------------------------------------------------------------
$ vi 2D-Sine_fubc.py
import matplotlib.pyplot as plt
import numpy as np
from drawnow import *

fig = plt.figure(1)
 
angles = []
sines = []
cosines = []
 
def show_plot():
    plt.plot(angles,sines,label='Sine')
    plt.plot(angles,cosines,label='Cosine')
    plt.legend()
    plt.grid()
    plt.xlabel('Angles [deg]')
    plt.ylabel('Value')
   
for x in np.linspace(0,np.pi*2,100):
    angles = np.append(angles, x)
    sines  = np.append(sines, np.sin(x))
    cosines= np.append(cosines, np.cos(x))
   
    drawnow(show_plot)


$ vi 3D-Surface.py
import matplotlib.pyplot as plt
import numpy as np
from drawnow import *
sizes = 101
x = np.linspace(-np.pi, np.pi, sizes)
X = np.tile(x,(sizes,1))
Y = np.transpose(X)
Z = np.zeros((sizes,sizes),dtype='float')
 
 
fig = plt.figure(1)
 
def show_plot():
    ax = fig.add_subplot(111,projection='3d')
    ax.plot_surface(X,Y,Z)
    ax.set_xlim((-np.pi,np.pi))
    ax.set_ylim((-np.pi,np.pi))
    ax.set_zlim((-1,1))
    pan = 30
    tilt = 60
    ax.view_init(pan,tilt)
   
for now in np.linspace(0,2*np.pi,100):
   
    for ix in range(0,sizes):
        for iy in range(0,sizes):
            dist = np.sqrt(X[ix,iy]**2 + Y[ix,iy]**2)
            Z[ix,iy] = np.cos((dist*3+now))*(1/(dist+1))
           
    drawnow(show_plot)