
Tenho o seguinte MWE, que gostaria de usar como uma espécie de roteiro para a apresentação da defesa. Basicamente tudo funciona e parece bom, mas há duas coisas que não sei como consertar. A primeira coisa é fazer com que os nós apareçam exatamente uns sobre os outros, de modo que por exemplo o ponto inicial à direita da Dissertação seja o mesmo para todos os três caminhos que partem daí. A segunda questão é como fazer com que o círculo dentro de cada nó tenha a mesma opacidade da linha e do preenchimento.
\documentclass{standalone}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usepackage{lmodern}
\usepackage{pgfplots}
\usetikzlibrary{ arrows
, positioning
, calc
, arrows.meta
, shapes
, snakes}
\colorlet{Navyblue}{NavyBlue}
\tikzstyle{project} = [
align=left
%, fill=NavyBlue
, opacity=0.2
, text opacity=1]
\newcommand{\myopacity}{1}
\begin{document}
\begin{tikzpicture}[baseline=(current bounding box.center), font=\sffamily, node distance=2cm]
\draw
node[project,anchor=east](P) {\textbf{Dissertation}}
node[project
,right= 2in of P.east
, anchor=east
, text opacity=0.4](P23) {}
node[project
, above= of P23.west
, anchor = west
](P1) {\textbf{Project I:}}
node[project
, right = 1in of P23
, text opacity=0.4](P2) {Project II: }
node[project
, below= 0.5in of P2.west
, anchor=west
, text opacity=0.4](P3) {Project III: }
node[project
, below= of P23.west
, anchor=west
, text opacity=0.4](P4) {Project IV:};
% Define different colors
\draw[{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, Gray
, opacity = 0.4] (P.east) -- (P23.west);
\draw[{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, darkgray
, opacity = 0.4] (P23.east) -- (P2.west);
\draw[{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, darkgray
, opacity = 0.4
] (P23.east) -- (P3.west);
\draw[{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, Gray
, opacity = \myopacity] (P.east) -- (P1.west);
\draw[{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, RoyalBlue
, opacity = 0.4] (P.east) -- (P4.west);
\draw[{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, Gray
, opacity = \myopacity] (P.east) -- (P1.west);
\end{tikzpicture}
\end{document}
Este é o resultado das alterações propostas no primeiro comentário:
Responder1
Em vez de colocar os textos nos nós:node[project,anchor=east](P) {\textbf{Dissertation}}
Eu os coloco como um rótulo. Os rótulos são nós, possuem as mesmas opções dos nós e podem ser modificados da mesma forma:node[project,anchor=east,label={left:\textbf{Dissertation}}](P) {}
Isso permitirá que você desenhe nós circulares:
\tikzset{project/.style={ align=left
%, fill=NavyBlue
, opacity=0.2
, text opacity=1
,draw %draw a circle node
,circle}
}
Isso simplifica o código de desenho de linha entre nós. Estes últimos conectam nós vazios e não é necessário especificar a P.east
posição P23.west
ou desenhar suas extremidades em um círculo como:{Circle[length=8pt]}-{Circle[length=8pt]}
\draw[{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, Gray
, opacity = 0.4] (P.east) -- (P23.west);
O código se torna:
\draw[%{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, Gray
, opacity = 0.4] (P) edge (P23);
Comentei todas as linhas de código que se tornaram inúteis sem excluí-las.
Eu criei um novo nó (P23')
:
node[project
,right= 2in of P
%, anchor=east
, text opacity=0.4](P23) {}
node[project
,right= 10pt of P23
%, anchor=east
, text opacity=0.4](P23') {}
\documentclass{standalone}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usepackage{lmodern}
\usepackage{pgfplots}
\usetikzlibrary{ %arrows
, positioning
, calc
, arrows.meta
, shapes
, snakes}
\colorlet{Navyblue}{NavyBlue}
\tikzset{project/.style={
align=left
%, fill=NavyBlue
, opacity=0.2
, text opacity=1
,draw
,circle}}
\newcommand{\myopacity}{1}
\begin{document}
\begin{tikzpicture}[%baseline=(current bounding box.center),
font=\sffamily,
node distance=2cm]
\draw
node[project,anchor=east,label={left:\textbf{Dissertation}}](P) {}
node[project
,right= 2in of P
%, anchor=east
, text opacity=0.4](P23) {}
node[project
,right= 10pt of P23
%, anchor=east
, text opacity=0.4](P23') {}
node[project
, above= of P23
%, anchor = west
, label= right:\textbf{Project I:}
](P1) {}
node[project
, right = 1in of P23
, text opacity=0.4
,label=right:Project II: ](P2) {}
node[project
, below= 0.5in of P2
% , anchor=west
, text opacity=0.4,label=right:Project III: ](P3) {}
node[project
, below= of P23
%, anchor=west
, text opacity=0.4
,label=below:Project IV:](P4) {};
% Define different colors
\draw[%{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, Gray
, opacity = 0.4] (P) edge (P23);
\draw[%{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, darkgray
, opacity = 0.4] (P23') -- (P2);
\draw[%{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, darkgray
, opacity = 0.4
] (P23') -- (P3);
\draw[%{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, Gray
, opacity = \myopacity] (P) -- (P1);
\draw[%{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, RoyalBlue
, opacity = 0.4] (P) -- (P4);
\draw[%{Circle[length=8pt]}-{Circle[length=8pt]}
, line width=2pt
, Gray
, opacity = \myopacity] (P) -- (P1);
\end{tikzpicture}
\end{document}