반응형

안녕하세요.

 

전 글은 주피터 노트북을 이용하여 딥러닝 서버를 만드는 글을 올렸습니다.

 

그 과정에서 주피터 노트북의 테마를 변경하였고, 확장 프로그램을 이용하여 이것저것 패키지를 추가했습니다.

하지만 주피터 노트북 테마의 툴바와 확장 프로그램에서 Table of Contents이 겹쳐서 오류는 아니지만 아래의 사진과 같이 됩니다. 

 

툴바에 가려 위 글이 가려 집니다. 

 

위 문제를 해결하기 위해서 주피터 노트북의 CSS를 건들여야 합니다. 어렵지 않으니 그대로 따라하시면 됩니다. 

 

C:\Users\{"사용자 이름"}\.jupyter\custom

 

주피터 노트북 테마를 설치했다면, .jupyter 디렉토리에 custom 폴더가 생성되있습니다.

 

custom 폴더에 custom.css가 있습니다.

custom

custom.css를 열어 아래처럼 주석 처리합니다. ( div의 maintoolbar )

/* 
div#maintoolbar {
 position: absolute;
 width: 90%;
 margin-left: -10%;
 padding-right: 8%;
 float: left;
 background: transparent !important;
}
#maintoolbar {
 margin-bottom: -3px;
 margin-top: 0px;
 border: 0px;
 min-height: 27px;
 padding-top: 2px;
 padding-bottom: 0px;
}
#maintoolbar .container {
 width: 75%;
 margin-right: auto;
 margin-left: auto;
}
*/

주피터 노트북을 다시 실행시킵니다.

위 처럼 툴바가 고정되어 더 이상 윗 부분을 가리지 않습니다. 

 

만약 저와 같이 따라 하셨다면, 참고하시면 좋을 것 같습니다. 

 

https://coding-yoon.tistory.com/152

 

주피터 노트북 개인 딥러닝 서버 만들기 ! (1) with Window10, Pytorch

이번에 컴퓨터를 맞추면서 그래픽카드 RTX 2060 super를 구매했습니다. 저만의 딥러닝 서버를 만들어 놓으면 어디서든 야외에서 노트북으로 가볍게 작업할 수 있습니다. ( 얼마나 작업을 할지 모르

coding-yoon.tistory.com

https://coding-yoon.tistory.com/153

 

주피터 노트북 개인 딥러닝 서버 만들기 ! (2) with Window10, Pytorch

안녕하세요. 주피터 노트북 개인 딥러닝 서버 만들기 2편입니다. 이번 글은 주피터 노트북을 좀 더 유용하고 보기 좋게 만들기 위한 편입니다. 굳이 안 하시고 넘어가셔도 무방합니다. ~ 1. 주피

coding-yoon.tistory.com

https://coding-yoon.tistory.com/154

 

주피터 노트북 개인 딥러닝 서버 만들기 ! (3) with Window10, Pytorch

안녕하세요. 만약 여기까지 따라 오셨다면 90% 정도 성공입니다. 나머지 10%는 Pytorch만 설치하면 됩니다. 굉장히 간단합니다. 아래 Pytorch 공식 사이트를 들어 갑니다. https://pytorch.org/ PyTorch An open s.

coding-yoon.tistory.com

 

728x90
반응형
반응형

안녕하세요.

 

주피터 노트북 개인 딥러닝 서버 만들기 2편입니다.

이번 글은 주피터 노트북을 좀 더 유용하고 보기 좋게 만들기 위한 편입니다. 굳이 안 하시고 넘어가셔도 무방합니다.

 

~ 1. 주피터 노트북 테마 ~

저는 주피터 노트북 기본 테마를 별로 좋아하지 않습니다. 현재 제가 다니고 있는 연구실은 정부에서 지원하는 딥러닝 서버를 주피터 노트북으로 이용하고 있습니다. 저만 사용하는 것이 아니기 때문에, 기본 테마로 뒀습니다. 

 

하지만 이 딥러닝 서버는 오로지 저만을 위한 서버이기 때문에 테마를 바꾸겠습니다. 

 

anaconda prompt를 들어가 pip install jupyterthemes 를 입력해 테마 패키지를 설치합니다.

pip install jupyterthemes # 주피터 노트북 테마 패키지 설치
jt -l # 테마 목록 출력

"""
Available Themes:
   chesterish
   grade3
   gruvboxd
   gruvboxl
   monokai
   oceans16
   onedork
   solarizedd
   solarizedl
"""

저는 테마 grade3이 제일 좋아합니다. 

jt -t grade3 -T -N
-T : 툴바 보이게 설정
-N : 제목 보이게 설정

 

툴바는 무조건 있는게 편합니다. 제목은 내가 현재 어떤 파일을 편집하는지 알기 편하고, 제목을 누르면 수정할 수 있어 편합니다. 이 정도 설정하시면 문제없습니다. 폰트 사이즈나 다양한 설정이 있지만 그건 구글에 치면 많은 블로그가 있습니다.

툴바
제목
jt -t grade3 -T -N

 

~ 2. 주피터 노트북 확장 프로그램 ~

확장프로그램은 사람들이 추천하는 것을 사용하면 편합니다. 아래 블로그 분께서 추천하시는 것들을 하시면 편합니다. 

https://www.rlee.ai/jupyter/jupyter-notebook-exntesions

 

주피터 노트북 확장 프로그램 사용하기

jupyter_contrib_nbextensions는 몇십 가지의 확장 프로그램을 모아둔 패키지입니다. 그 중에서 특히 많이 찾으실 만한 확장 프로그램들은 다음과 같습니다.

www.rlee.ai

개인적으로 몇 개를 더 추천드립니다.

2.1. Code prettify

제목 그대로 코드를 이쁘게 정리하는 툴입니다. 동작에는 영향을 끼치진 않습니다. 

2.2. Variable Inspector

매트랩의 작업 공간처럼, 변수들을 전체적으로 확인할 수 있습니다.

2.3. Execute Time

실행된 셀의 걸린 시간을 알려줍니다. 

executed in 15ms, finished 23:14:02 2021-07-16

 

그 외에 많은 툴이 있으니 찾아보시길 바랍니다. 설명도 자세히 나와 있기 때문에 커스터마이징 하기 좋습니다.

Nbextensions 클릭
설정

 

~ 3. DDNS ~

아래 블로그 분께서 DDNS에 대해 잘 설명해주셨습니다. ( ipTIME 공유기는 무료로 가능합니다. )

IP를 외우고 다니는 사람은 없습니다. DNS라 하여 IP의 또 다른 이름이라고 생각하시면 좋습니다. 

ex) www. naver. com

우리도 IP 대신 DNS를 사용하는 것입니다. 

https://luckygg.tistory.com/271

 

[ipTIME] DDNS 설정으로 외부에서 쉽게 공유기에 접속하기

DDNS(Dynamic DNS)란? 우선 DDNS를 이해하기 전에 DNS(Domain Name system)를 이해해야 합니다. 우리는 웹 브라우저에서 네이버나 구글에 접속하기 위해 www.naver.com 또는 www.google.com이라는 주소로 접속합니..

luckygg.tistory.com

 

 

ipTIME일 경우...

{사용자 지정}.iptime.org:{포트번호}

 

그런데 하나 이상한 부분이 있지 않나요?

 

보통 Naver나 Google을 브라우저에 입력할 때, 포트 번호를 적으시나요?

Naver를 접속할 때, 우리는 브라우저에 www.naver.com 입력합니다. 포트 번호는 어디 갔을까요?

이유는 간단합니다. http 포트번호는 80번으로, Well Known Port 번호입니다. 말 그대로 잘 알려진 포트번호입니다. 브라우저 내에서 생략되어 알아서 80번으로 접근합니다. 그렇기 때문에 www.naver.com:80 으로 들어가도 잘 동작합니다.

 

참고로 알아도 좋고, 몰라도 좋습니다.

 

~ 4. WoL ~

WoL은 Wake on LAN의 약자입니다. 말 그대로 원격으로 LAN을 통해 내 컴퓨터에 신호를 주어 깨운다는 뜻입니다. 항상 PC를 켜놓을 수 없기 때문에, 필요할 때 모바일로 내 컴퓨터를 켤 수 있습니다. 

WoL 같은 경우는 메인보드, 랜 카드 지원 호환성을 알아야 합니다. ( 보통 요즘 PC들은 거의 지원합니다. ) 

 

아래 블로그 분께서 깔끔히 정리해놓은 것이 있으니, 아래 것을 참고하시길 바랍니다.

https://luckygg.tistory.com/277

 

[ipTIME] WOL 어플로 어디서든 내 컴퓨터 전원 켜기

WOL이란? WOL은 Wake On Lan의 약자로, 특정 네트워크에 연결되어 있는 컴퓨터의 전원을 LAN을 통해 원격으로 켜는 기능입니다. WOL 설정만 되어 있다면 스마트폰으로 언제 어디서든 쉽게 집 또는 회사

luckygg.tistory.com

 

저처럼 ASUS 메인보드라면, 아래 블로그 참고하시길 바랍니다. 

https://intunknown.tistory.com/576

 

asus 메인보드 wol 설정 [bios]

asus 메인보드 wol 설정 [bios] 안녕하세요. 오늘은 wol을 하기 위해 바이오스를 설정해보려고 합니다. wol에 대한 간단한 설명. asus 메인보드 바이오스 설정. wol에 대한 간단한 설명. 이거 검색해서 올

intunknown.tistory.com

 

 

다음 글은 Pytorch GPU 버전을 설치하고, 딥러닝 SeNet 가볍게 하나 돌려 보겠습니다. 

https://coding-yoon.tistory.com/154

 

주피터 노트북 개인 딥러닝 서버 만들기 ! (3) with Window10, Pytorch

안녕하세요. 만약 여기까지 따라 오셨다면 90% 정도 성공입니다. 나머지 10%는 Pytorch만 설치하면 됩니다. 굉장히 간단합니다. 아래 Pytorch 공식 사이트를 들어 갑니다. https://pytorch.org/ PyTorch An open s.

coding-yoon.tistory.com

 

728x90
반응형
반응형

안녕하세요.

 

오늘은 PyQt5에 matplotlib를 연동하는 방법에 대해 이야기하겠습니다.

 

 

제가 이번에 만든 필터를 구현하면서 애먹었던 부분 중 하나였던게

 

pyqt5에 plt를 연동시키는 것이였습니다.

 

결국 답이 레퍼런스 찾아보거나, stackoverflow를 통해 방법을 알아냈습니다.

 

우선 pyqt5에 matplotlib를 연동시키는 방법을 설명하겠습니다. 

 

 

 

 

1. pyqt5에 plt 연동

 

 

from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas

 

 

우선 import 부분에 위에 문구를 추가해줍니다.

 


from matplotlib import pyplot as plt



self.fig = plt.figure(figsize=[4, 4])



a = plt.subplot(2, 1, 1)
a1 = plt.subplot(2, 1, 2)





 

plot이 두개 담겨있는 fig가 변수로 저장이 되어있겠죠?

 

사용법은 간단합니다.

 

위에 import 해준 라이브러리를 사용하기 위해 fig를 FigureCanvas에 담아주면 됩니다. 

 


from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib import pyplot as plt



self.fig = plt.figure(figsize=[4, 4])



a = plt.subplot(2, 1, 1)
a1 = plt.subplot(2, 1, 2)

self.canvas = FigureCanvas(self.fig)



 

정말 간단하죠?

 

 

 

2. pyqt5에 toolbar 연동

 

툴바

위의 사진들 많이 보셨죠?

 

self.fig.show() 하면 보이는 툴바입니다.

 

툴바는 plot을 만들어서 분석하기 위해 확대하교 움직이기 위해 사용합니다.

 

사용방법은 FigureCanvas랑 비슷합니다.

 




from matplotlib import pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar



self.fig = plt.figure(figsize=[4, 4])



a = plt.subplot(2, 1, 1)
a1 = plt.subplot(2, 1, 2)

self.canvas = FigureCanvas(self.fig)
self.toolbar = NavigationToolbar(self.canvas, self)


 

 

네. 비슷하기는 하지만 인자가 하나 더 들어가있죠?

 

 

첫번 째 인자로 우리가 방금 연동시킨 FigureCanvas가 들어가네요?

 

두번 째 인자로는 부모 인자를 넣으라 하는군요. 부모인자라 하면은 뭘까요?

 

우리들은 pyqt5를 사용하기 전에 우리들은 QWidget을 상속받아 사용합니다.

 

제 프로그램을 예시로

 

이런식으로 QWidget을 상속받고, self로 초기화 시킵니다. 

 

간단히 말해 parent 자리에 self를 넣어주면 됩니다.

 

 

 

3. Layout에 붙이기

 

2번까지 끝나셨으면 우리들에게는 두 개의 widget이 존재합니다.

 

self.canvas

self.toolbar

 

이제부터는 PyQt5의 기본 레이아웃 문제로 변하게 됩니다.

 

우선 저 같은 경우는 일단 Designer는 사용하지 않습니다. 

 

exe를 만들기 어려울뿐더러 하나 하나 코딩 한 줄 넣는게 저에겐 덜 헷갈려서 코딩으로 적겠습니다.

 

위에 그림처럼 위젯을 붙이기 위해서는 

 

수직으로 배치하는 QVBoxLayout (vertical)

 

lay = QVBoxLayout()

lay.addWidget(self.toolbar)
lay.addWidget(self.canvas)

 

짠!

 

만약 툴바를 아래로 내리고 싶으시면

 

lay = QVBoxLayout()

lay.addWidget(self.canvas)

lay.addWidget(self.toolbar)

짠!

 

두 위젯이 lay라는 레이아웃에 담겨 있습니다. 

 

이제 show를 해줍시다.

 

self.setLayout(lay)

 




from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib import pyplot as plt
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar



self.fig = plt.figure(figsize=[4, 4])



a = plt.subplot(2, 1, 1)
a1 = plt.subplot(2, 1, 2)

self.canvas = FigureCanvas(self.fig)
self.toolbar = NavigationToolbar(self.canvas, self)

lay = QVBoxLayout()
lay.addWidget(self.canvas)
lay.addWidget(self.toolbar)

self.setLayout(lay)


 

 

이런식으로 pyqt5에 matplot 연동시키시면 됩니다.

 

728x90
반응형

+ Recent posts