[[Mermaid]]를 사용하면 [[마크다운]]처럼 텍스트 방식으로 코드를 서술하여 그래프와 [[다이어그램]]을 그릴 수 있다. ## 파이 그래프 ### 기본 문법 우선 간단한 파이 그래프부터 그려 볼까? ``` ```mermaid pie title 내가 좋애하는 고기 "소고기": 20 "돼지고기": 50 "닭고기": 20 "기타고기": 10 ``` ```mermaid pie title 내가 좋애하는 고기 "소고기": 20 "돼지고기": 50 "닭고기": 20 "기타고기": 10 ``` ### 자동으로 백분율로 변환 굳이 100%에 맞추지 않아도 된다. 그냥 필요한 숫자를 쓰면 알아서 백분율로 변환해준다. ``` ```mermaid pie title 내가 구입한 책 "소설": 36 "수필": 24 "자기개발": 8 "IT": 73 "종교": 32 ``` ```mermaid pie title 내가 구입한 책 "소설": 36 "수필": 24 "자기개발": 8 "IT": 73 "종교": 32 ``` --- ## 플로우 차트 ### 그래프의 방향 위에서 아래로 ``` ```mermaid graph TD 처음 --> 끝 ``` ```mermaid graph TD 처음 --> 끝 ``` 왼쪽에서 오른쪽으로 ``` ```mermaid graph LR 처음 --> 끝 ``` ```mermaid graph LR 처음 --> 끝 ``` 그래프 방향을 나타내는 단어 - TB: Top to Bottom (위에서 아래로) - TD: top down (위에서 아래로) - BT: Bottom to Top (아래에서 위로) - LR: Left to Right (왼쪽에서 오른쪽으로)) - RL: Right to Left (오른쪽에서 왼쪽으로) ### 노드와 모양 기본적인 노드 모양 ``` ```mermaid graph LR id ``` ```mermaid graph LR id ``` 글씨가 있는 노드 ``` ```mermaid graph LR id["나는 상자야!"] ``` ```mermaid graph LR id["나는 상자야!"] ``` 여러 가지 노드 모양 ``` ```mermaid graph LR 둥근사각("모서리 둥근 사각형") 더둥근사각(["모서리가 더 둥근 사각형"]) 서브루틴[["서브루틴 모양"]] 납작원통[("나는야, 데이터베이스!")] 동그라미(("동그라미 그리려다...")) 왼쪽오목>"아, 왼쪽이 오목해!"] 육각{{"벌집에는 벌꿀이 가득~!"}} 마름모{"아몬드가 죽으면? 다이아몬드!"} 오른평행[/"오른쪽으로 기대!"/] 왼평행[\"왼쪽으로 기대!"\] 사다리꼴[/"뜀틀 넘어봤니?"\] 거꿀사라디[\"배 접어주세요!"/] ``` ```mermaid graph LR 둥근사각("모서리 둥근 사각형") 더둥근사각(["모서리가 더 둥근 사각형"]) 서브루틴[["서브루틴 모양"]] 납작원통[("나는야, 데이터베이스!")] 동그라미(("동그라미 그리려다...")) 왼쪽오목>"아, 왼쪽이 오목해!"] 육각{{"벌집에는 벌꿀이 가득~!"}} 마름모{"아몬드가 죽으면? 다이아몬드!"} 오른평행[/"오른쪽으로 기대!"/] 왼평행[\"왼쪽으로 기대!"\] 사다리꼴[/"뜀틀 넘어봤니?"\] 거꿀사라디[\"배 접어주세요!"/] ``` ### 연결합시다! 노드와 노르를 연결할 때는 `-->`, `---` , `-.->`처럼 직관적인 기호를 사용한 수 있다. ``` ```mermaid graph LR A-->B C---D ``` ```mermaid graph LR A-->B C---D ``` 연결 중간에 텍스트도 넣을 수 있다. ``` ```mermaid graph LR A-- 이것은 텍스트 ---B C---|저것도 텍스트|D ``` ```mermaid graph LR A-- 이것은 텍스트 ---B C---|저것도 텍스트|D ``` ``` ```mermaid graph LR A-- 요것은 텍스트 -->B C-->|요것도 텍스트|D ``` ```mermaid graph LR A-- 요것은 텍스트 -->B C-->|요것도 텍스트|D ``` 아직까지 쌍방향 화살표는 안되지만 나름 컨셉맵을 그릴 때는 이런 식으로 할 수는 있다. ``` ```mermaid graph LR A -->|이리 가고|B B -->|저리 가고|A ``` ```mermaid graph LR A -->|이리 가고|B B -->|저리 가고|A ``` 이것은 점선. ``` ```mermaid graph LR A -.->B C -. 텍스트예요! .-> D ``` ```mermaid graph LR A -.->B C -. 텍스트예요! .-> D ``` ### 진짜 그려봅시다! ``` ```mermaid graph LR R[교육의 3요소] --> A[교육 주체] -.-> AA((교사, 부모, 연장자)) R --> B[교육 객체] -.-> BB((학생, 자녀, 연소자)) R --> C[교육 매체] -.-> CC((교육과정, 교육내용)) ``` ```mermaid graph LR R[교육의 3요소] --> A[교육 주체] -.-> AA((교사, 부모, 연장자)) R --> B[교육 객체] -.-> BB((학생, 자녀, 연소자)) R --> C[교육 매체] -.-> CC((교육과정, 교육내용)) ``` ``` ```mermaid graph TD A[일어난다.] --> B{배가 고픈가?} B -- Yes --> C[밥을 먹는다.] --> D[잠을 잔다] B -- No --> D D --> A ``` ```mermaid graph TD A[일어난다.] --> B{배가 고픈가?} B -- Yes --> C[밥을 먹는다.] --> D[잠을 잔다.] B -- No --> D D --> A ``` 규칙을 알고 있으면 생각보다 굉장히 쉽게 그래프를 그릴 수 있다. [[GUI]]에 있는 팔레트에서 이것 저것 도형을 끌고와서 그리는 것보다 이쪽이 훨씬 빨르다. 물론 예쁘지는 않다. 선 모양이 마음에 들지 않는다. [[Mermaid]]는 이 밖에도 [[클래스 다이어그램]], [[상태 다이어그램]], [[개체 관계 다이어그램]] 등 개발자의 손이 많이 가능 여러 가지 다이어그램을 간단한 [[형식 언어]]로 그릴 수 있어서 좋다.