Latex에서 이와 같은 막대 다이어그램을 쉽게 만들 수 있는 방법이 있습니까?

Latex에서 이와 같은 막대 다이어그램을 쉽게 만들 수 있는 방법이 있습니까?

Latex에서 다이어그램을 만들려고 하는데 Tikz 경험 수준에 비해 너무 복잡합니다. 이 다이어그램을 쉽게 다시 만들 수 있는 방법이 있나요? 아니면 어떻게 해야 하는지에 대한 조언이 있나요? 제공할 수 있는 도움에 감사드립니다!

내가 재현하려는 이미지

답변1

너무 넓어서 페이지에 맞추는 데 어려움이 있을 수 있지만 여기에 forest.

여기에 이미지 설명을 입력하세요

\documentclass{article}

\usepackage{forest}
\tikzset{circ/.style={label={[draw, circle, red, minimum size=2.5ex, inner sep=0pt]left:#1}}}

\begin{document}

\begin{forest}
for tree={math content, l*=.3, anchor=center, font=\footnotesize,
    if level>=2{l sep=1mm, if level>=3{no edge}{}}{l sep=2cm},
    s sep=4mm}
[{(A,B,C)}
    [\emptyset[\emptyset, circ=1]]
    [(A)[\{(A)\}, circ=2]]
    [(B)[\{(B)\}, circ=3]]
    [(C)[\{(C)\}, circ=4]]
    [{(A,B)}[{\{(A),(B)\}}, circ=5[{\{(A,B)\}}, circ=6]]]
    [{(A,C)}[{\{(A),(C)\}}, circ=7[{\{(A,C)\}}, circ=8]]]
    [{(B,C)}[{\{(B),(C)\}}, circ=9[{\{(B,C)\}}, circ=10]]]
    [{(A,B,C)}
        [{\{(A),(B),(C)\}}, circ=11[{\{(A,B),(C)\}}, circ=12[{\{(A,C),(B)\}}, circ=13[{\{(B,C),(A)\}}, circ=14[{\{(A,B,C)\}}, circ=15]]]]]]
]
\end{forest}

\end{document}

답변2

지오메트리 없이 TikZ를 사용한지 꽤 오래되었습니다. 여기에 고전적인 솔루션이 있습니다. (Sandy'answer는 완벽합니다.) 문제가 있을 뿐입니다. 아마도 10,11,12 등을 정렬하는 것이 더 나을 것입니다. 저는 Sandy의 스타일을 사용했습니다.

빨간색 숫자의 정렬로 업데이트

\documentclass[a4paper,10pt,landscape]{article}
\usepackage{tikz}
\tikzset{circ/.style={label={[draw, circle, red, minimum size=2.5ex, inner sep=0pt]left:#1}}}
\begin{document} 
\begin{tikzpicture} [font=\footnotesize,
grow=south, level 1/.style={sibling distance=6em, level distance=5cm},
level 2/.style={ level distance=2cm},
level 3/.style={ level distance=1.5em},
level 4/.style={ level distance=1.5em},
level 5/.style={ level distance=1.5em},
level 6/.style={ level distance=1.5em}]
\node {(A,B,C)} % root
    child { node {$\emptyset$}
      child { node[circ=1] {$\emptyset$}}
    }
    child { node {(A)}
      child { node[circ=2] {\{(A)\}}}
    }
    child { node {(B)}
      child { node[circ=3] {\{(B)\}}}
    }
    child { node {(C)}
      child { node[circ=4] {\{(C)\}}}
    }
    child { node {(A,B)}
      child {   node[circ=5,minimum width=1.5cm] {\{(A),(B)\}} 
        child { node[circ=6,minimum width=1.5cm] {\{(A,B)\}}}}
    }
    child { node {(A,C)}
      child { node[circ=7,minimum width=1.5cm] {\{(A),(C)\}} 
        child {node[circ=8,minimum width=1.5cm] {\{(A,C)\} }}}
    }
    child { node {(B,C)}
      child { node[circ=9,minimum width=1.5cm] {\{(B),(C)\}} 
        child {node[circ=10,minimum width=1.5cm] {\{(B,C)\}}}}
    }
    child { node {(A,B,C)}
      child { node[circ=11,minimum width=2cm] {\{(A),(B),(C)\}} 
        child {node[circ=12,minimum width=2cm] {\{(A,B),(C)\}}  
         child {node[circ=13,minimum width=2cm] {\{(A,C),(B)\}} 
           child {node[circ=14,minimum width=2cm] {\{(B,C),(A)\}} 
             child {node[circ=15,minimum width=2cm] {\{(A,B,C)\}}}}}}}
};

\end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

답변3

나는 사용하는 것이 좋습니다마챠. 거기에서 '다이어그램 삽입' 옵션을 선택하고 '그리기 영역' 옵션을 선택하면 오른쪽에 그리기 영역이 표시되어 그릴 수 있습니다. 귀하의 다이어그램과 유사한 코드를 공유하고 있습니다. 이 플랫폼을 사용하여 작업을 이미지 또는 TikZ 형식으로 내보낼 수 있습니다. 더 나은 품질을 위해 TikZ 옵션을 선택하는 것이 좋습니다.

\documentclass{article}

\usepackage{tikz}

\begin{document}

\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt        

\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,296); %set diagram left start at 0, and has height of 296

%Straight Lines [id:da842538810449589] 
\draw    (381.88,44.88) -- (353.08,112.48) ;
%Straight Lines [id:da7257564806335599] 
\draw    (434.88,130.36) -- (434.88,179.56) ;
%Straight Lines [id:da20949947181562223] 
\draw    (349.88,130.36) -- (349.88,179.56) ;
%Straight Lines [id:da2593651135736319] 
\draw    (518.68,130.16) -- (518.68,179.36) ;
%Straight Lines [id:da7741353868078296] 
\draw    (281.88,131.36) -- (281.88,180.56) ;
%Straight Lines [id:da9720425366631544] 
\draw    (227.88,130.96) -- (227.88,180.16) ;
%Straight Lines [id:da581739553085237] 
\draw    (173.88,131.36) -- (173.88,180.56) ;
%Straight Lines [id:da8464131628402256] 
\draw    (120.68,130.56) -- (120.68,179.76) ;
%Straight Lines [id:da058139682734349885] 
\draw    (614.48,129.76) -- (614.48,178.96) ;
%Straight Lines [id:da4017264009317001] 
\draw    (177.4,111.13) -- (356.28,44.88) ;
%Straight Lines [id:da7610123999802281] 
\draw    (229.72,110.88) -- (365.88,44.88) ;
%Straight Lines [id:da2905799653222627] 
\draw    (123.32,112.48) -- (352.6,40.67) ;
%Straight Lines [id:da9847257278990789] 
\draw    (283.88,110.08) -- (374.68,44.88) ;
%Straight Lines [id:da09133555586008946] 
\draw    (389.48,44.88) -- (435.48,110.88) ;
%Straight Lines [id:da06694033598480398] 
\draw    (397.88,44.48) -- (518.33,110.53) ;
%Straight Lines [id:da5575718778158445] 
\draw    (408.28,43.68) -- (612.68,110.48) ;

% Text Node
\draw (351.4,24.4) node [anchor=north west][inner sep=0.75pt]    {$( A,B,C)$};
% Text Node
\draw (269.87,112.2) node [anchor=north west][inner sep=0.75pt]    {$( C)$};
% Text Node
\draw (329.67,112.07) node [anchor=north west][inner sep=0.75pt]    {$( A,B)$};
% Text Node
\draw (413.2,112.2) node [anchor=north west][inner sep=0.75pt]    {$( A,C)$};
% Text Node
\draw (262.48,182.68) node [anchor=north west][inner sep=0.75pt]    {$\{( C)\}$};
% Text Node
\draw (316.48,182.28) node [anchor=north west][inner sep=0.75pt]    {$\{( A) ,( B)\}$};
% Text Node
\draw (317.28,202.08) node [anchor=north west][inner sep=0.75pt]    {$\{( A,B)\}$};
% Text Node
\draw (400.68,182.68) node [anchor=north west][inner sep=0.75pt]    {$\{( A) ,( C)\}$};
% Text Node
\draw (401.08,202.28) node [anchor=north west][inner sep=0.75pt]    {$\{( A,C)\}$};
% Text Node
\draw (498.47,111.87) node [anchor=north west][inner sep=0.75pt]    {$( B,C)$};
% Text Node
\draw (485.28,182.08) node [anchor=north west][inner sep=0.75pt]    {$\{( B) ,( C)\}$};
% Text Node
\draw (485.08,201.88) node [anchor=north west][inner sep=0.75pt]    {$\{( B,C)\}$};
% Text Node
\draw (215.87,111.8) node [anchor=north west][inner sep=0.75pt]    {$( B)$};
% Text Node
\draw (208.48,182.28) node [anchor=north west][inner sep=0.75pt]    {$\{( B)\}$};
% Text Node
\draw (161.87,112.2) node [anchor=north west][inner sep=0.75pt]    {$( A)$};
% Text Node
\draw (154.48,182.68) node [anchor=north west][inner sep=0.75pt]    {$\{( A)\}$};
% Text Node
\draw (114.27,111.8) node [anchor=north west][inner sep=0.75pt]    {$\emptyset $};
% Text Node
\draw (113.87,182.2) node [anchor=north west][inner sep=0.75pt]    {$\emptyset $};
% Text Node
\draw (581.2,111) node [anchor=north west][inner sep=0.75pt]    {$( A,B,C)$};
% Text Node
\draw (568.68,181.48) node [anchor=north west][inner sep=0.75pt]    {$\{( A) ,( B) ,( C)\}$};
% Text Node
\draw (569.08,202.08) node [anchor=north west][inner sep=0.75pt]    {$\{( A,B) ,( C)\}$};
% Text Node
\draw (569.08,221.88) node [anchor=north west][inner sep=0.75pt]    {$\{( A,C) ,( B)\}$};
% Text Node
\draw (568.88,241.88) node [anchor=north west][inner sep=0.75pt]    {$\{( B,C) ,( A)\}$};
% Text Node
\draw (569.21,261.81) node [anchor=north west][inner sep=0.75pt]    {$\{( A,B,C)\}$};
% Text Node
\draw (32,174.33) node [anchor=north west][inner sep=0.75pt]   [align=left] {\begin{minipage}[lt]{44.12pt}\setlength\topsep{0pt}
\begin{center}
Possible \\Groups
\end{center}

\end{minipage}};
% Text Node
\draw (14.67,100) node [anchor=north west][inner sep=0.75pt]   [align=left] {\begin{minipage}[lt]{58.85pt}\setlength\topsep{0pt}
\begin{center}
Participating\\Schools
\end{center}

\end{minipage}};
% Text Node
\draw (206.07,16.4) node [anchor=north west][inner sep=0.75pt]   [align=left] {\begin{minipage}[lt]{49.78pt}\setlength\topsep{0pt}
\begin{center}
Schools in\\District
\end{center}

\end{minipage}};

\end{tikzpicture}
\end{document}

위의 코드를 사용하면 다음과 같은 결과를 얻게 됩니다.

여기에 이미지 설명을 입력하세요

관련 정보