D2Lang

[D2Lang] 3. D2에서 화살표 모양을 바꿔보자!

o0zrone 2023. 4. 19. 12:40
728x90

오늘은 화살표의 다양한 모양과 색상 설정하는 방법을 알아보겠습니다.

 

아래의 예제 코드를 입력하시고 돌려보시면 아래의 사진과 같이 출력됩니다.

x1 -> y1
x2 -- y2
x3 <- y3
x4 <-> y4

x5 <-> y5: {
  source-arrowhead: {
    label: src
    shape: diamond
    style.filled: true
  }
  target-arrowhead: dst {
    shape: circle
    style.filled: false
  }
}

x5 <-> y5: {
  source-arrowhead: {
    shape: arrow
    style.filled: false
  }
  target-arrowhead: {
    shape: triangle
  }
}

x6 <-> y6: {
  source-arrowhead: {
    shape: cf-one
  }
  target-arrowhead: {
    shape: cf-many
  }
}
x6 <-> y6: {
  source-arrowhead: {
    shape: cf-one-required
  }
  target-arrowhead: {
    shape: cf-many-required
  }
}

(x5 <-> y5)[0].style.stroke: red
(x5 <-> y5)[1].style.stroke: yellow

(x6 <-> y6)[0].style.stroke: green
(x6 <-> y6)[1].style.stroke: blue

코드를 설명드리자면 일단 기본 화살표는 triangle로 나타납니다.

src -> dst로 "(시작 Box ) (화살표) ( 도착 Box )"의 형태를 기본으로 가지고 갑니다.

화살표의 종류는 아래와 같이 4종류이며

화살표의 머리 종류는 총 8개 있습니다.

 

x5와 y5의 두번째 노란색 화살표를 보시면 triangle과 arrow의 차이가 안 보이는데요.

일단 문서에 따르면 arrow의 경우 triangle보다 더 뾰족하다고 합니다.

 

x5 <-> y5를 보시면 제가 style.filled속성을 사용했는데요.

filled의 경우 현재 rectangle과 circle만 지원되고 있습니다.

또한 label속성으로 직접 화살표 쪽에 텍스트를 추가할 수 있고 아니면 그냥 dst 화살표처럼 뒤에 붙여도 됩니다.

 

화살표 shape은 아래의 예제와 동일하게 생겼으며 코드에 적힌 순서와 출력되는 순서는 동일합니다.

source-arrowhead는 시작되는 화살표고 target-arrowhead 마무리되는 도착되는 화살표를 설정하는 것입니다.

'--'의 경우나 화살표 머리가 없는 부분에는 속성을 설정해도 적용되지 않습니다.

 

또한 화살표의 색을 설정하려면 코드에 적은 순서대로 인덱스가 생성됩니다.

따라서 저는 x5와 y5를 이어주는 화살표를 red, yellow로 x6와 y6를 이어주는 화살표를 green, blue로 수정했습니다.

결과

이런 식으로 D2Lang에서 화살표의 모양과 색을 설정하는 방법을 알아봤습니다.

도움이 되셨으면 좋겠습니다.