标签平行于曲线

标签平行于曲线

我绘制了一些多项式不同阶的曲线。代码和生成的图像看起来类似于以下内容:

\documentclass[convert]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
 \begin{semilogxaxis}[
    width= 0.8\textwidth,
    height= 0.5\textwidth,
    ymin=0,
    ymax=40,
    xmin=0.1,
    xmax=10,        
    xlabel=frequency,
    ylabel=damping,
    grid=both,
    major grid style={black!50}
    ]
 \newcommand{\const}{0.25}
 \addplot [domain=0.01:10, samples=1000,smooth]{10*ln(1+\const*(x+1)^(2))/ln(10)};
 \addplot [domain=0.01:10, samples=1000,smooth]{10*ln(1+\const*(2*(x+1)^(2)-1)^2)/ln(10)};
 \addplot [domain=0.01:10, samples=1000,smooth]{10*ln(1+\const*(4*(x+1)^(3)-3*(x+1))^2)/ln(10)};
 \addplot [domain=0.01:10, samples=1000,smooth]{10*ln(1+\const*(8*(x+1)^(4)-8*(x+1)^2+1)^2)/ln(10)}; 
\end{semilogxaxis}
\end{tikzpicture}
\end{document}

上述代码的输出

有没有一种优雅的方法可以将标签放在曲线附近?我想象使用不同曲线的斜率,并相应地旋转节点的文本,但我真的不知道该怎么做。此外,标签应该有白色背景色,但这部分应该很容易……

可能的结果可能是如下标签:

在此处输入图片描述

答案1

node [pos=0.6, sloped, anchor=south] {<Text>};您可以通过在线条末尾添加以下内容,将标签与绘图线平行放置\addplot

请注意,我将样本数量从 1000 减少到了 30。对于像这样平滑的函数,您不需要那么多采样点。

\documentclass[convert]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
 \begin{semilogxaxis}[
    width= 0.8\textwidth,
    height= 0.5\textwidth,
    ymin=0,
    ymax=40,
    xmin=0.1,
    xmax=10,        
    xlabel=frequency,
    ylabel=damping,
    grid=both,
    major grid style={black!50},
    /tikz/plot label/.style={
        fill=white,
        sloped,
        anchor=south,
        inner sep=1pt,
        font=\bfseries
    },
    samples=30,
    domain=0.01:10
    ]
 \newcommand{\const}{0.25}
 \addplot [thick, smooth]{10*ln(1+\const*(x+1)^(2))/ln(10)} node [pos=0.65, plot label] {a};
 \addplot [thick, smooth]{10*ln(1+\const*(2*(x+1)^(2)-1)^2)/ln(10)} node [pos=0.55, plot label] {b};
 \addplot [thick, smooth]{10*ln(1+\const*(4*(x+1)^(3)-3*(x+1))^2)/ln(10)} node [pos=0.45, plot label] {c};
 \addplot [thick, smooth]{10*ln(1+\const*(8*(x+1)^(4)-8*(x+1)^2+1)^2)/ln(10)} node [pos=0.38, plot label] {d};
\end{semilogxaxis}
\end{tikzpicture}
\end{document}

相关内容