본문 바로가기

Software/Python

Jupyter Notebook 화면을 바로 프리젠테이션 Slide로 구성하자 - datitran-jupyter2slides -

Jupyter Notebook은 참 편리한 도구입니다. 마크다운 문서를 사용할 수 있는 것도 그렇고 실행 결과를 바로 볼 수 있는 것과 다시 문서를 읽었을때, Out sessino에 실행 결과를 바로 확인할 수 있다는 정말 많은 장점들을 가지고 있습니다. 이렇게 Jupyter Notebook을 사용하다보면 또 한 가지 작은(^^) 욕심이 생기는데요. 바로 Presentation입니다. Jupyter Notebook의 코드와 결과를 일일이 캡쳐해서 파워포인트에 넣기 귀찮을 때가 있거든요^^ 오늘은 그 이야기를 해볼려고 합니다.~

언제나 그렇듯 Python 세계와 오픈소스 세계에 어디나 존재하는 수많은 고마운 분들(^^) 중 한 분이 또 저렇게 뭔가 멋진 것을 공개했습니다. jupyter2slides[바로가기]라는 이름으로 말이죠^^ 여기에 가서 다운로드를 받던, clone을 하던 나의 PC로 옮겨 놓습니다. 그리고 테스트를 해 보도록 하죠^^

테스트 파일이 필요한데.. 요즘 제가 토요일 마다 강의[바로가기]하고 있는 예제 프로그램 하나를 대상으로 하도록 하겠습니다. 이 강의에서 서울시 범죄 현황을 분석하는 내용이 있는데요. 그 파일을 열어서

먼저 View -> Cell Toolbar -> Slideshow를 선택해 줍니다.

그러면 저렇게 각 셀마다 Slide Type을 지정할 수 있게 됩니다. Slide는 페이지 구성의 기본이구요. 옆 방향으로 진행합니다. Sub-Slide는 Slide에 종속되어서 아래로 진행하게 되구요. 그외 Skip도 있습니다.^^

이제 첫 셀에는 대문을 달아줘야죠~~ 그리고 이 셀의 속성은 RAW NBConvert로 지정해야 합니다.

아... 한 가지 약간 귀찮은 것은 그래프의 결과를 볼때, 슬라이드 화면에 꽉차게 만들어 주기 위해 위 그림처럼 함수로 지정해 주어야 할 듯 합니다. 다른 방법이 있는지 고민해야겠어요^^

이렇게 호출해서 사용하는 거죠^^

이제 본 게임이죠^^ Github에서 받은 코드들이 있는 폴더에서 지금 예제는 static이라는 폴더에 있습니다. 그리고 위 그림처럼

python create_slides.py --file static/test_02.ipynb

이라고 명령을 터미널에서 주면 됩니다.

그러면 정적 HTML 페이지를 만들어 줍니다. 여기서 만약 cp949 codec 어쩌고 하면서 에러 메세지가 나면, create_slides.py 파일을 편집기로 열어서 main()을 

def main():
    """Convert the notebook to slides and then do some cleaning."""
    try:
        output = subprocess.check_output(
            ['jupyter', 'nbconvert', args.file_name, '--to', 'slides', '--reveal-prefix', 'reveal.js-3.1.0',
             '--config', 'static/slides_config.py'], stderr=subprocess.STDOUT).decode('utf-8')
        print(output.rstrip())

        slide_name = output.split(' ')[-1].rstrip()
        with open(slide_name, 'r', encoding='UTF8') as f:
            clean_file = clean_html(f.read())
        with open(slide_name, 'w', encoding='UTF8') as f:
            f.write(clean_file)
        print('Successfully adjusted.')
    except IndexError:
        print('Provide name of the slide.')

와 같이 바꾸어 encoding='UTF-8' 옵션을 잡아주어야 합니다. 그리고나서...

위 그림처럼

python run.py --file static/test_02.slides.html

명령으로 실행하면 됩니다.

그러면 접속해야할 주소가 나타나는데요. 웹 브라우저에서 위에 표기된 주소로 접근하면 됩니다.

그러면 웹 브라우저에서 저렇게 나타나는 거죠.. 우와~~~

제일 위에 현재 위치, 오른쪽 아래에 페이지와 이동 버튼 (물론 스페이스바로 다 진행됩니다.)이 있습니다.

아까 이야기한 그래프~~~

이렇게 화면에 다 나오길 기대한거죠^^

특히 놀라운것은... Folium[바로가기]의 대응인데요. 이렇게 지도가 다 나타납니다. 단순 캡쳐한 그림이 아니니까 그림에 있는 확대, 축소 버튼도 잘 동작합니다.

흠... Portland의 미국에서의 위치가 저기군요... 흠.. 동부일 줄 알았는데... 뭐 아무튼.. 꽤 좋은 도구를 또 하나 알게 된 것 같습니다.~~~ ^^

반응형