带有标记图的 PgfPlots 延伸到图形框之外

带有标记图的 PgfPlots 延伸到图形框之外

抱歉,标题让人困惑。

数学家协会

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}

    \begin{tikzpicture}[scale=0.75]
        \begin{axis}[ylabel=Y-Axis, xlabel=X-Axis, xmin=0, xmax=10, ymin=0, ymax=12, clip=false, yticklabel pos=right, ylabel near ticks]
        \pgfplotsinvokeforeach{0.01,0.1,0.9}{
            \addplot[mark=none, domain=0.0:10, thick] {-ln(#1/5^x)/ln(5)} node [pos=0,left] {$c_x=#1$};
        }
        \end{axis}
    \end{tikzpicture}

\end{document}

生成以下图表

图表显示了延伸到框外的绘图。

这正是我想要的......除了 c_x=0.01 线延伸到框外面!

clip=false需要进行设置才能使c_x=标签显示出来,但我认为它会产生这种副作用。

我怎样才能鱼与熊掌兼得?也就是说,我怎样才能将自动定位的标签放在左侧,而将图表完美地包含在右侧?

答案1

啊,真棘手!

\sneakylabel{<label text>}这是一个您可以用来代替该方法的新命令node [pos=0] ...

\pgfplotsinvokeforeach{0.01,0.1,0.9}{
    \addplot[mark=none, domain=0.0:10, thick] {-ln(#1/5^x)/ln(5)};
    \sneakylabel{$c_x=#1$}
}

会给你

它首先将 a 定位coordinate在绘图的开头,并使用一个唯一的名称(使用标签文本,因此如果您需要多个相同的标签,我们必须对此进行一些调整)。然后它将\node实际标签的命令添加到after end axis-list,其中包含将在执行剪辑后执行的代码。node使用我们之前保存的 来定位coordinate

享受蛋糕吧!

\documentclass{standalone}
\usepackage{pgfplots}

\newcommand{\sneakylabel}[1]{
    \coordinate (sneakylabel{#1}) at (current plot begin);
    \pgfplotsset{
        after end axis/.append code={
            \node [anchor=east] at (sneakylabel{#1}){#1};
        }
    }
}

\begin{document}

    \begin{tikzpicture}[scale=0.75]
        \begin{axis}[ylabel=Y-Axis, xlabel=X-Axis, xmin=0, xmax=10, ymin=0, ymax=12, yticklabel pos=right, ylabel near ticks,]
        \pgfplotsinvokeforeach{0.01,0.1,0.9}{
            \addplot[mark=none, domain=0.0:10, thick] {-ln(#1/5^x)/ln(5)};
            \sneakylabel{$c_x=#1$}
        }
        \end{axis}
    \end{tikzpicture}

\end{document}

答案2

您可以使用该选项restrict y to domain*=0:12

相关内容