In
\path[draw,thick] (0,0) |- node{Hi} (1.5,1.5);
the node is placed at the middle of the path (midway
, pos=.5
).
The |-
and -|
operators are special because their middle lies exactly on the sharp kink.
The middle of second part of your path is therefore at .75
of your whole path, thus
node[pos=.75,above]
is needed.
Example
\path[draw] (0,0) -| (5,-1);
\foreach \x in {0.0,0.25,0.5,0.75,1.0}{
\path[draw] (0,0) -| node[pos=\x] {\x} (5,-1);
}
Output

Code
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (-3,-3) rectangle (3,3);
\path[draw,thick] (0,0) |- node[pos=.75,above] {Hi} (1.5,1.5);
\end{tikzpicture}
\end{document}
Output

A different approach
As Paul Gaborit has mentioned in a comment there is also the possibility to avoid the specialties of |-
and -|
and actually use two path parts with the coordinate specification |-
and -|
(which are in fact only short-cuts for the perpendicular coordinate system).
In a path like
\path (<c1>) -- (<c1> |- <c2>) -- node {} (<c2>);
you do have two path parts:
- one from
<c1>
to the coordinate vertically through <c1>
and horizontally through <c2>
, and
- one from that point to
<c2>
where we want to place the node (at the middle of that part, see above).
If you want to use these two-parters repeatedly, I advise you to use custom to path
s so that you do not need to repeat both coordinates. (The number stands for the path part where the node shall be placed at.)
Code
\documentclass[tikz]{standalone}
\tikzset{
|- 1/.style={to path={-- (\tikztostart |- \tikztotarget) \tikztonodes -- (\tikztotarget)}},
|- 2/.style={to path={-- (\tikztostart |- \tikztotarget) -- (\tikztotarget) \tikztonodes}},
-| 1/.style={to path={-- (\tikztostart -| \tikztotarget) \tikztonodes -- (\tikztotarget)}},
-| 2/.style={to path={-- (\tikztostart -| \tikztotarget) -- (\tikztotarget) \tikztonodes}},
}
\begin{document}
\begin{tikzpicture}[draw, thick]
\draw (0,0) to[|- 2] node{Hi} (1.5,1.5);
\draw (0,-1) to[-| 1] node{Hi} ++ (1.5,-1.5);
\end{tikzpicture}
\end{document}
Output
