像本例中那样,由更复杂的数学公式创建的图例条目是重叠的,并且与线条的对齐是错误的。
\documentclass[]{scrbook}
\usepackage{pgfplots}
\usepackage{amsmath}
\begin{document}
\pgfplotsset{width=0.8\textwidth, height=0.6\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}[scale only axis,samples=2000,
/pgfplots/enlargelimits=false,
legend style={legend pos=north west}]
\addplot[domain=0:30] gnuplot{5*exp(-((x-5*pi)/(2.5*pi))**2)*sin(2*x)+x};
\addplot[domain=0:30] gnuplot{x};
\legend{$f(x) = 5\exp\left(-\left(\dfrac{x-5\pi}{2.5\pi}\right)^2\right)
\sin(2x) + x$,
$f(x)_\text{fit} = x$}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
可以使用以下方法更改对齐方式
legend cell align=left,
其他问题可以通过多种不同方式进行改变 - 接下来我没有使用它们,samples=2000
因为它会显著增加编译时间 - 但问题与此无关。
- 使用
legend style={legend pos=north west,font=\tiny}
给出
\begin{tikzpicture}
\begin{axis}[scale only axis,
legend cell align=left,
/pgfplots/enlargelimits=false,
legend style={legend pos=north west,font=\tiny}]
\addplot[domain=0:30] {5*exp(-((x-5*pi)/(2.5*pi))^2)*sin(deg(2*x))+x};
\addplot[domain=0:30] {x};
\legend{$f(x) = 5\exp\left(-\left(\dfrac{x-5\pi}{2.5\pi}\right)^2\right)
\sin(2x) + x$,
$f(x)_\text{fit} = x$}
\end{axis}
\end{tikzpicture}
使用@percusse 的
\raisebox
想法(聊天期间给予发帖许可 - 感谢@percusse!)\legend{\raisebox{2.5ex}{$f(x) = 5\exp\left(-\left(\dfrac{x-5\pi}{2.5 \pi}\right)^2\right)\sin(2x) + x$}
- 在图例中使用空白行
\begin{tikzpicture}
\begin{axis}[scale only axis,
/pgfplots/enlargelimits=false,
legend cell align=left,
legend style={legend pos=north west,font=\tiny}]
\addplot[domain=0:30] {5*exp(-((x-5*pi)/(2.5*pi))^2)*sin(deg(2*x))+x};
\addlegendentry{$f(x) = 5\exp\left(-\left(\dfrac{x-5\pi}{2.5\pi}\right)^2\right)$}
\addlegendimage{empty legend};
\addlegendentry{};
\addplot[domain=0:30] {x};
\addlegendentry{$f(x)_\text{fit} = x$};
\end{axis}
\end{tikzpicture}
- 或者你可以把图例放在
caption
使用\label
和\ref
\begin{figure}
\begin{tikzpicture}
\begin{axis}[scale only axis,
legend cell align=left,
/pgfplots/enlargelimits=false,
legend style={legend pos=north west,font=\tiny}]
\addplot[domain=0:30] {5*exp(-((x-5*pi)/(2.5*pi))^2)*sin(deg(2*x))+x};
\label{plot:firstplot};
\addplot[domain=0:30] {x};
\label{plot:secondplot};
\end{axis}
\end{tikzpicture}
\caption{\ref{plot:firstplot} is $f(x) = 5\exp\left(-\left(\dfrac{x-5\pi}{2.5\pi}\right)^2\right)\sin(2x) + x$ and
\ref{plot:secondplot} is $f(x)_\text{fit}=x$}
\end{figure}