Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- RS-485
- homebridge
- 공모주
- 애플
- raspberry pi
- Espressif
- esp32
- Bestin
- 해외주식
- ConnectedHomeIP
- 나스닥
- 홈네트워크
- 국내주식
- 배당
- 현대통신
- SK텔레콤
- Python
- 오블완
- 미국주식
- cluster
- 파이썬
- Apple
- 힐스테이트 광교산
- 코스피
- 티스토리챌린지
- 월패드
- 매터
- matter
- Home Assistant
- MQTT
Archives
- Today
- Total
YOGYUI
Python으로 순서도 그리기 (schemdraw) 본문
반응형
Flowchart를 웹에서 보여줘야 할 필요가 생겨서 이리저리 검색하다가 python, matplotlib 기반 라이브러리인 schemdraw를 한번 써보기로 했다
schemdraw.readthedocs.io/en/latest/
전자회로, 논리회로, 신호처리 등 다양한 종류의 schematics를 그리기 위한 Element들이 구현돼있다
(Latex도 지원되는듯)
예제코드를 보면 알겠지만, 한땀한땀 노가다로 코딩해줘야된다
사용성을 높이려면 고수준의 커스터마이징이 필요할 것 같다
각설하고, 다음과 같이 Flowchart도 어렵지 않게 구현할 수 있다
# test.py
# author: yogyui
import schemdraw
from schemdraw import flow
d = schemdraw.Drawing()
d.add(flow.Start(w=2, h=2, label="START"))
d.add(flow.Arrow('down', l=2, color='red'))
cond1 = d.add(flow.Decision(S="No", E="YES", label="Hungry?"))
d.add(flow.Arrow('down', xy=cond1.S, l=2))
cond2 = d.add(flow.Decision(W="No", E="Yes", label="Sleepy?"))
d.add(flow.Line('left', xy=cond2.W, l=1))
d.add(flow.Arrow('down', l=2))
d.add(flow.Box(label="Coding !!"))
d.add(flow.Line('right', xy=cond2.E, l=1))
d.add(flow.Arrow('down', l=2))
box = d.add(flow.Box(label="Drink\nRed Bull !!"))
d.add(flow.Arrow('left', xy=box.W, l=3))
d.add(flow.Line('right', xy=cond1.E, l=5, color='red'))
d.add(flow.Arrow('down', l=1, color='red'))
cond3 = d.add(flow.Decision(S="No", E="Yes", label="Have\nMoney?"))
d.add(flow.Arrow('down', xy=cond3.S, l=3))
d.add(flow.Box(label="Coding !!"))
d.add(flow.Line('right', xy=cond3.E, l=2, color='red'))
d.add(flow.Arrow('down', l=4, color='red'))
d.add(flow.Box(label="Chicken !!", color='red'))
d.draw(show=True)
결과물
Matplotlib 기반이기 때문에 jupyter나 spyder같은 IDE랑 연동해서 쓰기도 편하고 pyqt나 tk같은 GUI 백엔드랑 연동해서 어플리케이션에 집어넣기도 수월하다
[장점] 회로도나 순서도 단순히 스크린샷 찍은거랑은 확연히 다른 화질의 schematic을 제공할 수 있다
문서화가 잘되어 있다
Matplotlib에 익숙하다면 사용법을 빠르게 익힐 수 있다 (Element parameter)
[단점] HSPICE급의 노가다가 필요하다 (왠만하면 변경할 일 없는 도면에 사용하는게 좋을 듯)
반응형
'Software > Python' 카테고리의 다른 글
PyQt5 - QTableWidget Column Header Label 가져오기 (0) | 2021.06.21 |
---|---|
Python::구조적 패턴 매칭 - 파이썬에서 switch/case문을?! (0) | 2021.03.21 |
Flask - Dynamic Page Update (Ajax) (0) | 2021.01.10 |
Flask - extension을 이용한 HTTP 인증 절차 구현 (0) | 2021.01.08 |
PyQt Serial Port List (0) | 2021.01.07 |