주변 직사각형 그리기

주변 직사각형 그리기

tikz 다이어그램의 다른 노드와 가장자리 위에 주변 직사각형을 어떻게 추가합니까? 명령을 사용하면 \draw (0,0) rectangle (10,40)다른 모든 구성 요소가 이 지점 아래에서 시작됩니다. 내가 원하는 것은 이 다이어그램에 있는 것입니다.

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

내 tikz 코드는 다음과 같습니다.

\documentclass{article}
\pagestyle{empty}
\usepackage{tikz}

\tikzstyle{vertex} = [fill,shape=circle,node distance=80pt]
\tikzstyle{edge} = [fill,opacity=.2,fill opacity=.5,line cap=round, line join=round, line width=50pt]
\tikzstyle{elabel} =  [fill,shape=circle,node distance=30pt, opacity = .2]

\pgfdeclarelayer{background}
\pgfsetlayers{background,main}

\begin{document}

\begin{tikzpicture}



\begin{pgfonlayer}{background}



\node[vertex,label={[font = \Large]above:\(C_{11}, \$30\)}, label={[font = \Large]below:\(F_{1}, F_{2}\)}] (v1) {};

\node[vertex,right of=v1,label={[font = \Large]above:\(C_{21}\)}, label={[font = \Large]below:\(F_{1}, F_{2}\)}] (v2) {};

\node[vertex,right of=v2,label={[font = \Large]above:\(C_{31}\)}, label={[font = \Large]below:\(F_{6}\)}] (v3) {};



\node[vertex,below of=v1,label={[font = \Large]above:\(C_{12},\$40\)}, label={[font = \Large]below:\(F_{1}, F_{2}\)}] (v4) {};

\node[vertex,right of=v4,label={[font = \Large]above:\(C_{22},\$20\)}, label={[font = \Large]below:\(F_{1}, F_{2}\)}] (v5) {};

\node[vertex,right of=v5,label={[font = \Large]above:\(C_{32},\$20\)}, label={[font = \Large]below:\(F_{6}\)}] (v6) {};



\node[vertex,below of=v4,label={[font = \Large]above:\(C_{31},\$45\)}, label={[font = \Large]below:\(F_{1}\)}] (v7) {};

\node[vertex,below of=v5,label={[font = \Large]above:\(C_{32},\$50\)}, label={[font = \Large]below:\(F_{4}, F_{5}\)}] (v8) {};

\node[vertex,below of=v6,label={[font = \Large]above:\(C_{33},\$40\)}, label={[font = \Large]below:\(F_{4}, F_{5}\)}] (v9) {};



\node[vertex,below of=v7,label={[font = \Large]above:\(C_{41}, \$30\)}, label={[font = \Large]below:\(F_{1}\)}] (v10) {};

\node[vertex,below of=v8,label={[font = \Large]above:\(C_{42}, \$70\)}, label={[font = \Large]below:\(F_{4}, F_{5}\)}] (v11) {};



\draw[edge,color=yellow,line width=65pt] (v2) -- (v3);

\draw[edge,color=red,line width=65pt] (v1) -- (v5);


\draw[edge,color=blue,line width=65pt] (v10) -- (v8) -- (v6);


\draw[edge,color=green, line width=65pt] (v10) -- (v11) -- (v6);


\end{pgfonlayer}

\node[elabel,color=yellow,label=right:\(\$25\)]  (e1) at (7,0) {};
\node[elabel,below of=e1,color=red,label=right:\(\$30\)]  (e2) {};
\node[elabel,below of=e2,color=blue,label=right:\(\$70\)]  (e3) {};
\node[elabel,below of=e3,color=green,label=right:\(\$90\)]  (e4) {};

%Task nodes

\node[above of=v1,label={[font = \Large]above:\(Task \ T_1\)}] (t1) {};

\node[above of=v2,label={[font = \Large]above:\(Task \ T_2\)}] (t2) {};

\node[above of=v3,label={[font = \Large]above:\(Task \  T_3\)}] (t3) {};

\end{tikzpicture}
\end{document}

답변1

노드의 좌표나 상대 위치를 지정하지 않으면 (0,0)에 배치됩니다. 이는 C_11 노드가 (0,0)에 있음을 의미합니다. 다른 모든 노드는 이 오른쪽 및/또는 아래에 있으므로 \draw (0,0) rectangle (10,40);y축의 양의 방향이 위쪽을 향하므로 당연히 첫 번째 열 주위에 맞지 않습니다. 또한 기본 단위 벡터의 길이가 1cm이므로 10cm x 40cm 크기의 직사각형이 생성되는데 이는 너무 큽니다.

물론 경로에 다른 좌표를 사용하는 것도 rectangle가능합니다. 예를 들어

\draw (-1,1.2) rectangle (1,-9.8);

하지만 도서관을 이용할 수도 있습니다 fit. \usetikzlibrary{fit}서문에 추가하고 ,

\node [draw, fit=(v1)(v10), inner sep=30pt] {};

다이어그램에서. 그러면 v1및 노드 주위에 맞는 노드가 만들어집니다 v10. 스타일 에 사용된 양 inner sep의 절반이 조금 넘습니다 .line widthedge

관련 없는 댓글: \tikzstyle{foo}=[..]일반적으로 를 선호하여 더 이상 사용되지 않는 것으로 간주됩니다 \tikzset{foo/.style={...}}. 그리고 상단 라벨에는 Task수학적 표현의 일부를 만들지 마세요 . 예를 들어 대신 작성하십시오 Task \( T_1 \).

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

\documentclass{article}
\pagestyle{empty}
\usepackage{tikz}
\usetikzlibrary{fit}
\tikzset{
  vertex/.style={
     fill,
     shape=circle,
     node distance=80pt},
  edge/.style={
     fill,
     opacity=.2,
     fill opacity=.5,
     line cap=round,
     line join=round,
     line width=50pt},
  elabel/.style={
     fill,
     shape=circle,
     node distance=30pt,
     opacity = .2}
}

\pgfdeclarelayer{background}
\pgfsetlayers{background,main}

\begin{document}

\begin{tikzpicture}
\begin{pgfonlayer}{background}
\node[vertex,label={[font = \Large]above:\(C_{11}, \$30\)}, label={[font = \Large]below:\(F_{1}, F_{2}\)}] (v1) {};

\node[vertex,right of=v1,label={[font = \Large]above:\(C_{21}\)}, label={[font = \Large]below:\(F_{1}, F_{2}\)}] (v2) {};

\node[vertex,right of=v2,label={[font = \Large]above:\(C_{31}\)}, label={[font = \Large]below:\(F_{6}\)}] (v3) {};


\node[vertex,below of=v1,label={[font = \Large]above:\(C_{12},\$40\)}, label={[font = \Large]below:\(F_{1}, F_{2}\)}] (v4) {};

\node[vertex,right of=v4,label={[font = \Large]above:\(C_{22},\$20\)}, label={[font = \Large]below:\(F_{1}, F_{2}\)}] (v5) {};

\node[vertex,right of=v5,label={[font = \Large]above:\(C_{32},\$20\)}, label={[font = \Large]below:\(F_{6}\)}] (v6) {};


\node[vertex,below of=v4,label={[font = \Large]above:\(C_{31},\$45\)}, label={[font = \Large]below:\(F_{1}\)}] (v7) {};

\node[vertex,below of=v5,label={[font = \Large]above:\(C_{32},\$50\)}, label={[font = \Large]below:\(F_{4}, F_{5}\)}] (v8) {};

\node[vertex,below of=v6,label={[font = \Large]above:\(C_{33},\$40\)}, label={[font = \Large]below:\(F_{4}, F_{5}\)}] (v9) {};



\node[vertex,below of=v7,label={[font = \Large]above:\(C_{41}, \$30\)}, label={[font = \Large]below:\(F_{1}\)}] (v10) {};

\node[vertex,below of=v8,label={[font = \Large]above:\(C_{42}, \$70\)}, label={[font = \Large]below:\(F_{4}, F_{5}\)}] (v11) {};


\draw[edge,color=yellow,line width=65pt] (v2) -- (v3);

\draw[edge,color=red,line width=65pt] (v1) -- (v5);


\draw[edge,color=blue,line width=65pt] (v10) -- (v8) -- (v6);


\draw[edge,color=green, line width=65pt] (v10) -- (v11) -- (v6);


\end{pgfonlayer}

\node[elabel,color=yellow,label=right:\(\$25\)]  (e1) at (7,0) {};
\node[elabel,below of=e1,color=red,label=right:\(\$30\)]  (e2) {};
\node[elabel,below of=e2,color=blue,label=right:\(\$70\)]  (e3) {};
\node[elabel,below of=e3,color=green,label=right:\(\$90\)]  (e4) {};

%Task nodes

\node[above of=v1,label={[font = \Large]above:Task \( T_1\)}] (t1) {};

\node[above of=v2,label={[font = \Large]above:Task \(T_2\)}] (t2) {};

\node[above of=v3,label={[font = \Large]above:Task \(T_3\)}] (t3) {};


%\draw (-1,1.2) rectangle (1,-9.8);

\node [draw, fit=(v1)(v10), inner sep=30pt] {};
\end{tikzpicture}
\end{document}

관련 정보