그래프를 자동으로 그리는 방법은 무엇입니까?

그래프를 자동으로 그리는 방법은 무엇입니까?

추상 그래프를 입력하고 그림을 반환할 수 있는 간단한 패키지가 있습니까?

비슷한 질문2010년에 질문을 받았지만 내 질문과 관련된 답변을 받지 못했습니다. 복잡한 코드는 필요하지 않습니다. 그래프의 가장자리 목록을 제공하고 그림을 얻으면 됩니다. (물론 몇 가지 선택적 매개 변수도 환영합니다.) 이는 이미 많은 프로그래밍 언어에서 구현되었으므로 LaTeX에서도 사용할 수 있어야 한다고 생각합니다.

답변1

적어도 두 가지 방법이 있습니다:

  1. 가장 유연한 (그리고 내가 추천하는 것)은 다음을 사용하는 것입니다.PGF3/TikZ최신 버전의 패키지(버전 3.0.0 이상)가 있고 luatex/를 사용하여 lualatex컴파일하는 경우 의 자동 레이아웃 기능을 사용할 수 있습니다. PGF 매뉴얼을 참조하세요. 이에 대한 전용 장이 있습니다. 장점은 TikZ의 모든 기능을 사용하여 노드/가장자리의 스타일을 지정할 수 있으며 문서의 나머지 부분과 원활하게 조화를 이룰 수 있다는 것입니다. 레이블/노드 내용 및 TikZ 스타일에 (거의) 임의의 TeX 코드를 사용할 수 있습니다. 단점은 성능일 수 있지만 라이브러리를 사용하면 이 문제를 완화할 수 있습니다 external(매뉴얼 참조).

    매뉴얼의 예:

    \tikz [>=spaced stealth’]
    \graph [layered layout, components go right top aligned, nodes=draw, edges=rounded corners]
    {
        first root -> {1 -> {2, 3, 7} -> {4, 5}, 6 }, 4 -- 5;
        second root -> x -> {a -> {u,v}, b, c -> d -> {w,z} };
        third root -> child -> grandchild -> youngster -> third root;
    };
    

    예

  2. graphviz를 사용하여 레이아웃을 생성한 다음dot2tex. 장점은 여전히 ​​기본 문서와 동일한 글꼴을 얻을 수 있고 수학을 사용할 수 있으며 그래프를 한 번 컴파일하면 문서를 컴파일할 때마다 레이아웃을 수행하지 않아도 된다는 것입니다.

    LaTeX 패키지를 사용하여 후자를 자동화하는 방법이 있습니다 dot2texi. 이 작업을 수행하려면 옵션을 pdflatex사용하여 실행해야 합니다 . 와 함께 설치해야 하는(파이썬에 따라 다름) 외부 도구를 호출해야 합니다 . 최신 버전에서는 TikZ 코드를 생성하고 노드/에지에 대한 사용자 정의 TikZ 스타일을 지정할 수 있는 옵션이 있습니다. 문서의 인용문:-shell-escapedot2texidot2texgraphviz

    Graphviz 및 dot2tex의 출력은 완벽하지 않습니다. 출판물에 사용할 올바른 결과를 얻으려면 수동 조정이 필요한 경우가 있습니다. 최종 및 외관 조정의 경우 도트 소스를 해킹하는 것보다 생성된 코드를 편집하는 것이 더 쉬운 경우가 많습니다. 이는 tikz 출력 형식을 사용할 때 특히 그렇습니다.

관련 정보