Pgfplots, coloque a seta decorativa no centro na posição especificada

Pgfplots, coloque a seta decorativa no centro na posição especificada

Gostaria de desenhar uma seta na parte vertical de uma curva paramétrica. Considere, por exemplo, o seguinte trochoida.

\documentclass{scrbook}

\usepackage{tikz}
\usepackage{pgfplots}

\usetikzlibrary{
    arrows.meta
  , bending
  , decorations.markings
  }
\pgfplotsset{compat = 1.17}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        width           = 0.4\textwidth
      , height          = 0.25\textwidth
      , axis equal
      , axis lines      = middle
      , enlargelimits   = false
      , tick style      = {draw = none}
      , ymin            = {0.0}
      , xtick           = \empty
      , ytick           = \empty
      ]
        \addplot+[
            no markers
          , thick
          , domain =  -2.08869:8.37188
          , smooth
          , postaction = {decorate}
          , decoration = {
                markings
              , mark = at position 0.132010 with {\arrow{Stealth[length = 2mm, bend]}}
              , mark = at position 0.210413 with {\arrow{Stealth[length = 2mm, bend]}}
              }
          ] ({x - 1.5 * sin(x r)}, {1.5 - 1.5 * cos(x r)});
    \end{axis}
\end{tikzpicture}

\end{document}

Calculei as integrais correspondentes e sei que as posições das partes "verticais" da curva são 0,132 e 0,210 expressas como uma fração do comprimento total. O resultado fica feio, pois é aqui que ficam as pontas das setas:

insira a descrição da imagem aqui

Como colocar o centro da flecha nesses pontos, e não na ponta?

Também uma questão secundária: especifiquei "dobrar", mas não parece dobrado. Por que?

Responder1

Já que você define explicitamente o comprimento das \arrowmarcações. Você poderia usar um decoration tranform, consulte pgfmanual§24.4.1. No presente caso, desloquei as setas pela metade do comprimento.

Aqui está a saída, com seu gráfico em azul e o peneirado em vermelho autotransparente.

% arara: lwpdflatex
\documentclass{scrbook}

\usepackage{tikz}
\usepackage{pgfplots}

\usetikzlibrary{
    arrows.meta
  , bending
  , decorations.markings
  }
\pgfplotsset{compat = 1.17}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
            width           = 0.4\textwidth
            , height          = 0.25\textwidth
            , axis equal
            , axis lines      = middle
            , enlargelimits   = false
            , tick style      = {draw = none}
            , ymin            = {0.0}
            , xtick           = \empty
            , ytick           = \empty
        ]
        \addplot+[
            no markers
            , thick
            , domain =  -2.08869:8.37188
            , smooth
            , trig format=rad
            , postaction = {decorate}
            , decoration = {
                    markings
                    , mark = at position 0.132010 with {\arrow{Stealth[length = 2mm, bend]}}
                    , mark = at position 0.210413 with {\arrow{Stealth[length = 2mm, bend]}}
                }
        ] ({x - 1.5 * sin(x)}, {1.5 - 1.5 * cos(x)});
        \addplot+[
            no markers
            , thick,opacity=0.5
            , domain =  -2.08869:8.37188
            , smooth
            , trig format=rad
            , postaction = {decorate}
            , decoration = {
                    markings
                    , transform={xshift=1mm}
                    , mark = at position 0.132010 with {\arrow{Stealth[length = 2mm, bend]}}
                    , mark = at position 0.210413 with {\arrow{Stealth[length = 2mm, bend]}}
                }
        ] ({x - 1.5 * sin(x)}, {1.5 - 1.5 * cos(x)});
    \end{axis}
\end{tikzpicture}

\end{document}

insira a descrição da imagem aqui

informação relacionada