抱歉,标题让人困惑。
数学家协会
\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
。