Pgfplots:沿函数绘制文本

Pgfplots:沿函数绘制文本

我想说明一个材料模型,特别是相同的加载和卸载路径,它们通过下图中跟随材料模型的箭头说明。

伪结果

我想在箭头上贴上标签,具体说明loadingunloading。我设法用装饰图书馆来自这篇文章但我对结果并不满意。问题如下:

  • 不应Loading正好位于箭头上,而是应在文本和箭头之间留出一点空间。
  • 这种装饰导致箭头开头处出现一个箭头尖,我无法消除。
  • 我想将文本沿数组长度居中,而不是使用左缩进。
  • 使用装饰-library 文本看起来有点像素化。还有其他选择吗?

有人能帮助我解决上述任何问题吗?

\documentclass[a4paper,10pt]{scrreprt}
\usepackage[T1]{fontenc}
% \usepackage[utf8]{inputenc}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=25mm, top=25mm, bottom=25mm}
\usepackage{pgfplots}
\usetikzlibrary{decorations.text}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    domain=0:2,
    xmin=0, xmax=2.25,
    ymin=0, ymax=4.5,
    samples=100,
    axis y line=center,
    axis x line=middle,
]
    \addplot+[mark=none] {2*0.7*(1+x)*(1-1/(1+x)^3)};
    \addplot+[->,mark=none, black,
          decoration={text along path,
              text={Loading},
              text align={left indent={0.25\dimexpr\pgfdecoratedpathlength\relax}}
          },
          postaction={decorate},
    ][domain=0.5:1.5] {2*0.7*(1+x)*(1-1/(1+x)^3)+0.5};
    \addplot+[<-,mark=none, black][domain=0.5:1.5] {2*0.7*(1+x)*(1-1/(1+x)^3)-0.5};
\end{axis}
\end{tikzpicture}
\end{document}

编辑:

感谢@Harish Kumar,我解决了这些问题。不幸的是,装饰-library 产生的文本有些模糊,看起来像像素图形。有什么方法可以避免这种情况吗?

在此处输入图片描述

答案1

为了增加线条和文本之间的间隙,您可以使用raise=<dimen>。要将文本对齐到中心,请使用text align=center。我找不到为什么会出现额外的箭头(这是由于装饰,但为什么……)。要绕过那个额外的箭头,您可以绘制两次,一次使用装饰,另一次使用线条,如

\addplot[draw=none,
          postaction={decorate,decoration={text along path,
              text={Loading},raise=1ex,
              text align={center}
          }},
          domain=0.5:1.5,
    ] {2*0.7*(1+x)*(1-1/(1+x)^3)+0.5};     %%<--- decoration alone
    \addplot+[mark=none,black,
          domain=0.5:1.5,->,samples=150
    ] {2*0.7*(1+x)*(1-1/(1+x)^3)+0.5};     %% line alone

代码:

\documentclass[a4paper,10pt]{scrreprt}
\usepackage[T1]{fontenc}
% \usepackage[utf8]{inputenc}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\geometry{a4paper,left=25mm,right=25mm, top=25mm, bottom=25mm}
\usepackage{pgfplots}
\usetikzlibrary{decorations.text}

\pgfplotsset{compat=1.12}
\begin{document}

\begin{tikzpicture}
\begin{axis}[
    domain=0:2,
    xmin=0, xmax=2.25,
    ymin=0, ymax=4.5,
    samples=100,
    axis y line=center,
    axis x line=middle,
]
    \addplot+[mark=none,samples=150] {2*0.7*(1+x)*(1-1/(1+x)^3)};
    \addplot[draw=none,
          postaction={decorate,decoration={text along path,
              text={Loading},raise=1ex,
              text align={center}
          }},
          domain=0.5:1.5,
    ] {2*0.7*(1+x)*(1-1/(1+x)^3)+0.5};
    \addplot+[mark=none,black,
          domain=0.5:1.5,->,,samples=150
    ] {2*0.7*(1+x)*(1-1/(1+x)^3)+0.5};
    \addplot[draw=none,
          postaction={decorate,decoration={text along path,
              text={Unloading},raise=-2ex,
              text align={center},
          }},
          domain=0.5:1.5
          ] {2*0.7*(1+x)*(1-1/(1+x)^3)-0.5};
    \addplot+[<-,mark=none, black,domain=0.5:1.5,samples=150] {2*0.7*(1+x)*(1-1/(1+x)^3)-0.5};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

我不想要模糊的文字

在此处输入图片描述

您的系统可能正在使用位图字体。

相关内容