This question is related to Draw curly braces in TikZ.
Is there a way of making the solution more general for when you wish to use node names to define the end points? To illustrate, I've made a slight change to the code given by @Jake on the earlier question. In my figure below, the brace on the left is drawn to the nodes I've specified (rather than coordinates), but the result is drawn to touch the boxes. I would prefer to have a small space so that the brace doesn't touch the boxes, however, the xshift
and yshift
options don't seem to have any effect on how the brace is drawn. Is there a way of modifying the brace so that it looks more like the one on the right of the figure (has a small space between brace and boxes), without having to specify additional nodes to enforce the space I require?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[scale=1]
\draw[thick] (-1,0) rectangle +(6,7.5);
\filldraw[thick, top color=white,bottom color=red!50!] (0.5,0) rectangle node{$N_S$} +(1.3,0.5);
\filldraw[thick, top color=white,bottom color=red!50!] (2.2,0) rectangle node{$N_L$} +(1.3,0.65);
\filldraw[top color=white,bottom color=blue!50!] (0.5,0.5) rectangle node{$P_{1}$} +(1.3,0.5);
\filldraw[top color=white,bottom color=blue!50!] (2.2,0.65) rectangle node{$P_{2}$} +(1.3,1.0);
\filldraw[top color=white,bottom color=blue!50!] (0.5,1.0) rectangle node{$P_{3}$} +(1.3,1.5);
\filldraw[top color=white,bottom color=blue!50!] (2.2,1.65) rectangle node{$P_{4}$} +(1.3,2.0);
\filldraw[top color=white,bottom color=blue!50!] (0.5,2.5) rectangle node{$P_{5}$} +(1.3,2.5);
\filldraw[top color=white,bottom color=blue!50!] (2.2,3.65) rectangle node{$P_{6}$} +(1.3,3.0);
% defining nodes at the points that are the ends of the left brace on the figure
\node[draw] (TopLeftPoint) at (0.5,5.0){box 1};
\node[draw] (BottomLeftPoint) at (0.5,0.5){box 2};
%changing xshift and yshift values on next line doesn't seem to affect the brace at all
\draw [decorate,decoration={brace,amplitude=10pt},xshift=-400pt,yshift=1000pt]
(BottomLeftPoint.west) -- (TopLeftPoint.west) node [black,midway,xshift=-0.6cm]
{\footnotesize $P_1^*$};
\draw [decorate,decoration={brace,amplitude=10pt,mirror,raise=4pt},yshift=0pt]
(3.5,0.65) -- (3.5,6.5) node [black,midway,xshift=0.8cm] {\footnotesize
$P_2$};
\end{tikzpicture}
\end{document}
Best Answer
Thanks to input from @HKumar here's a fix that uses two
xshift
commands - onexshift
for each of the centres of the nodes which are joined by the brace. It still would be nice to know why onexshift
doesn't move the whole brace as experimentation with the firstxshift
value in the\draw [decorate,decoration=
below seems to have no effect.