[Tex/LaTex] rotation problem text in arrow tikz

tikz-arrowstikz-pgf

I'm trying to make a graphic that needs two arrows, I've already found how to rotate the arrow, but I don't want the text to be rotated 180 degrees.

Bonusproblem, I want the red line ticker …

\documentclass[10pt,a4paper]{article}
\usepackage[dutch]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{tkz-euclide}
 \usetikzlibrary{calc, trees, positioning, arrows, shapes, shapes.multipart, shadows, matrix, decorations.pathreplacing, decorations.pathmorphing}
\usepackage{enumitem}
\setlist{itemsep=0pt}
\usepackage{graphicx}
\begin{document}
 \begin{center}
\begin{tikzpicture}
\tkzInit[ymin=0,ymax=9,xmin=0,xmax=14]
\tkzClip
\tkzDefPoints{1/1/A, 1/7/Y, 13/1/X, 1/2/B, 13/2/E, 7/2/K, 7/6.3/L, 4/5/J, 10/5/M, -2/2.5/C, 16/2.5/D}
 \draw[->, very thick] (A) -- (Y) node[above, yshift=-1cm, xshift=-0.3cm, rotate=90] {effectiviteit};
\draw[->, very thick] (A) -- (X) node[below, xshift=-0.4cm, yshift=-0.3cm] {stress (+)};
\draw[very thick, red] plot [smooth] coordinates {(B) (J) (L) (M) (E)};
 \node[single arrow, rounded corners=3pt, fill=blue!30, draw, align=center, xshift=3cm, yshift=2.5cm, minimum height=4cm, minimum width=2cm]{Concentratie \\ Inspanning };
\node[single arrow, rounded corners=3pt, fill=red!30, draw, align=center, xshift=11cm, yshift=2.5cm, rotate=180, minimum height=4cm, minimum width=2cm]{Relaxatie \\ Ontspanning};
\end{tikzpicture}
\end{center}
\end{document}

enter image description here

Best Answer

Instead of rotate=180, you can use shape border rotate=180. To get a thicker red line you can apply ultra thick or even specify the exact thickness via line width=<size> (as I have done below).

enter image description here

But as you can see from the above, with a really thick red line the ends don't look so good, and the intersection with the vertical axis is not very nice. That can be fixed by using line cap=round and whiting out the overlap of the axis to obtain:

enter image description here


You can draw another line by applying a shift to each coordinate (not sure why a scope did not work though). And to make the desired arrows visible, I added a shorten >=-0.4cm so that the arrows of the lines are not obscured by large rotated arrow.

enter image description here

Notes:


Code:

\documentclass[10pt,a4paper]{article}
\usepackage[dutch]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{tkz-euclide}
 \usetikzlibrary{calc, trees, positioning, arrows, shapes, shapes.multipart, shadows, matrix, decorations.pathreplacing, decorations.pathmorphing}
\usepackage{enumitem}
\setlist{itemsep=0pt}
\usepackage{graphicx}
\begin{document}
 \begin{center}
\begin{tikzpicture}
\tkzInit[ymin=0,ymax=9,xmin=0,xmax=14]
\tkzClip
\tkzDefPoints{1/1/A, 1/7/Y, 13/1/X, 1/2/B, 13/2/E, 7/2/K, 7/6.3/L, 4/5/J, 10/5/M, -2/2.5/C, 16/2.5/D}


\draw[line width=5pt, line cap=round, red] plot [smooth] coordinates {(B) (J) (L) (M) (E)};
 \node[single arrow, rounded corners=3pt, fill=blue!30, draw, align=center, xshift=3cm, yshift=2.5cm, minimum height=4cm, minimum width=2cm]{Concentratie \\ Inspanning };
\node[single arrow, rounded corners=3pt, fill=red!30, draw, align=center, xshift=11cm, yshift=2.5cm, shape border rotate=180, minimum height=4cm, minimum width=2cm, ]{Relaxatie \\ Ontspanning};

%% Fill out the overflow of the really thick red line
\fill[white] (A) rectangle ($(A)+(-3.0em,2.0cm)$);

%% Move to be after so that the axis is on top of the thick red line
 \draw[->, very thick] (A) -- (Y) node[above, yshift=-1cm, xshift=-0.3cm, rotate=90] {effectiviteit};
\draw[->, very thick] (A) -- (X) node[below, xshift=-0.4cm, yshift=-0.3cm] {stress (+)};

\end{tikzpicture}
\end{center}
\end{document}

Code: Second Line & Arrows:

\documentclass[10pt,a4paper]{article}
\usepackage[dutch]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{tkz-euclide}
 \usetikzlibrary{calc, trees, positioning, arrows, shapes, shapes.multipart, shadows, matrix, decorations.pathreplacing, decorations.pathmorphing}
\usepackage{enumitem}
\setlist{itemsep=0pt}
\usepackage{graphicx}

\tikzset{My Shift/.style={yshift=0.75cm}}

\begin{document}
{\centering%
\begin{tikzpicture}
\tkzInit[ymin=0,ymax=9,xmin=0,xmax=14]
\tkzClip
\tkzDefPoints{1/1/A, 1/7/Y, 13/1/X, 1/2/B, 13/2/E, 7/2/K, 7/6.3/L, 4/5/J, 10/5/M, -2/2.5/C, 16/2.5/D}


\draw[line width=5pt, line cap=round, red, -latex, shorten >=-0.4cm] plot [smooth] coordinates {(B) (J) (L) (M) (E)};
\draw[line width=5pt, line cap=round, blue, -latex, shorten >=-0.4cm] plot [smooth] coordinates {([My Shift]B) ([My Shift]J) ([My Shift]L) ([My Shift]M) ([My Shift]E)};


\node[single arrow, rounded corners=3pt, fill=blue!30, draw, align=center, xshift=3cm, yshift=2.5cm, minimum height=4cm, minimum width=2cm]{Concentratie \\ Inspanning };

\node[single arrow, rounded corners=3pt, fill=red!30, draw, align=center, xshift=11cm, yshift=2.5cm, shape border rotate=180, minimum height=4cm, minimum width=2cm, ]{Relaxatie \\ Ontspanning};

%% Fill out the overflow of the really thick red line
\fill[white] (A) rectangle ($(A)+(-3.0em,2.0cm)$);

%% Move to be after so that the axis is on top of the thick red line
 \draw[->, very thick] (A) -- (Y) node[above, yshift=-1cm, xshift=-0.3cm, rotate=90] {effectiviteit};
\draw[->, very thick] (A) -- (X) node[below, xshift=-0.4cm, yshift=-0.3cm] {stress (+)};

\end{tikzpicture}}
\end{document}