在 Tikz 中为绘制的函数添加图例

在 Tikz 中为绘制的函数添加图例

我在 Tikzpicture 中有 6 个函数,我想在左上角创建一个图例,以便所有颜色都用 p 的值来标识。

在此处输入图片描述

所以我想在一个框中创建一个图例,表示:黑色 p=0、绿色 p=0.025、红色 p=0.05、蓝色 p=0.1、洋红色 p=0.25、棕色 p=0.5(这将包括一条带有相应颜色的小线以及 p 值)。

我试过了\addlegendentry{hello},但这对我来说不起作用。我的代码如下。警告,比例很混乱,因为我将其精确地缩放到某个尺寸。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots,fp}
\usetikzlibrary{fixedpointarithmetic}
\begin{document}
\begin{tikzpicture}[scale=0.225277]
 \clip (-3.95,-2) rectangle (30,30);
{
\draw
 plot[domain=0:30, range=0:30, variable=\x,samples=90] 
 ({\x},{max(2*\x^2/(6.7+\x),0)});
\draw[green]
 plot[domain=0:30, range=0:30, variable=\x,samples=90] 
 ({\x},{max(2*\x^2.06/(\x^(2.06-0.9)+6.7+(\x^2.5)/1000),0)});
\draw[red]
 plot[domain=0.9:30, range=0:30, variable=\x,samples=90] 
 ({\x},{max(2*(abs(\x-0.9))^1.844/((abs(\x-0.9))^(1.844-0.9)+3.7+((abs(\x-0.9))^2.45)/500),0)});
\draw[blue]
 plot[domain=1.7:30, range=0:30, variable=\x,samples=90] 
 ({\x},{max(2*(abs(\x-1.7))^1.6/((abs(\x-1.7))^(0.7)+2.6+((abs(\x-1.7))^2.37)/500),0)});
\draw[magenta]
 plot[domain=3.3:30, range=0:30, variable=\x,samples=90] 
 ({\x},{max(2*(abs(\x-3.3))^1.07/((abs(\x-3.3))^(1.07-0.9)+1+((abs(\x-3.3))^2.1)/800),0)});
\draw[brown]
 plot[domain=5.9:30, range=0:30, variable=\x,samples=90] 
 ({\x},{max(2.15*(abs(\x-5.9))^0.88/((abs(\x-5.9))^(0.09)+1+((abs(\x-5.9))^2)/1000),0)});
}
\draw (0,0) rectangle (30,30);
\node at (28,-.9) {$v_1$};
\node at (-2.1,28) {$MRS$};
\end{tikzpicture}
\end{document}

答案1

由于您已经加载 pgfplots要求一个图例,我无法抗拒,只是将你的代码翻译成 pgfplots。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=0:30,ymin=0,ymax=30,samples=90,legend pos=north west,no
marks,legend entries={1,...,6}]
\addplot {max(2*\x^2/(6.7+\x),0)};
\addplot[green] {max(2*\x^2.06/(\x^(2.06-0.9)+6.7+(\x^2.5)/1000),0)};
\addplot[red] {max(2*(abs(\x-0.9))^1.844/((abs(\x-0.9))^(1.844-0.9)+3.7+((abs(\x-0.9))^2.45)/500),0)};
\addplot[blue] {max(2*(abs(\x-1.7))^1.6/((abs(\x-1.7))^(0.7)+2.6+((abs(\x-1.7))^2.37)/500),0)};
\addplot[magenta] {max(2*(abs(\x-3.3))^1.07/((abs(\x-3.3))^(1.07-0.9)+1+((abs(\x-3.3))^2.1)/800),0)};
\addplot[brown] {max(2.15*(abs(\x-5.9))^0.88/((abs(\x-5.9))^(0.09)+1+((abs(\x-5.9))^2)/1000),0)};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

当然,您可以添加更多有意义的图例条目,根据需要调整宽度和高度等等。

相关内容