我试图添加一个图例,标签将标记 tikzpicture 内部函数的所有三个部分,或者想办法在 tikzpicture 外部清晰地标记图形。我遵循了一点指导用于 tikz 中的分段函数。请注意,这是我正在进行的数学测试的一部分。这是我到目前为止的代码:
\documentclass{exam}
\usepackage[utf8]{inputenc}
\usepackage[10pt]{extsizes}
\usepackage{geometry}
\usepackage{fancyhdr}
\usepackage{pgfplots}
\pgfplotsset{my style/.append style={axis x line=middle, axis y line=
middle, xlabel={$x$}, ylabel={$y$}, axis equal }}
\setlength{\voffset}{-0.1in}
\setlength{\headsep}{5pt}
\geometry{height=9.1in}
\begin{document}
\begin{questions}
\begin{tikzpicture}
\begin{axis}[my style, minor tick num=1]
\addplot[domain=-5:-3] {x+3};
\addplot[domain=-3:1] {(4-(1+x)^2)^(1/2)};
\addplot[domain=1:5] {2*x^2/3-8*x/3};
\addplot[mark=*] coordinates {(1,-1)};
\addplot[mark=*,fill=white, only marks] coordinates {(1,-2)(1,0)};
\legend{y=x+3}
\end{axis}
\end{tikzpicture}
\end{questions}
\end{document}
答案1
你的例子还是不能编译。我删除了不相关的包,用 class来用或standalone
显示图片。tikz
pgfplots
请注意包装上的警告并按照说明进行操作。
Package pgfplots Warning: running in backwards compatibility mode
(unsuitable tick labels; missing features).
Consider writing \pgfplotsset{compat=1.17} into your preamble.
手册已在从到的pgfplots
部分中展示了如何添加图例和自定义图例。4.9.4 Legends
4.9.8
添加图例
您可以使用\addlegendentry
或\legend
或 键legend entries
来添加图例。
使用\addlegendentry
,将每个放在\addledgendentry
后面\addplot
\addlegendentry{$x+3$}
\addlegendentry{$\bigl(4-(1+x)^2\bigr)^{1/2}$}
\addlegendentry{$2x^2/3-8x/3$}
或者简单地
legend entries={$x+3$, $\bigl(4-(1+x)^2\bigr)^{1/2}$, $2x^2/3-8x/3$}
% or
\legend{$x+3$, $\bigl(4-(1+x)^2\bigr)^{1/2}$, $2x^2/3-8x/3$}
图例对齐和位置
第 4.9.5 节展示了如何改变图例的外观。
legend cell align=left,
legend pos=outer north east
将在轴线的东北外侧绘制一个左对齐的图例。
图例图像
您可以通过以下方式定制自己的图例图像样式legend image code/.code
(pgfplots
已提供line legend
,empty legend
等等area legend
......)
/pgfplots/line 1/.style={
legend image code/.code={
\draw[##1] (0cm, -0.3cm) -- (0.6cm, 0.3cm);
}
},
/pgfplots/line 2/.style={
legend image code/.code={
\draw[##1] (0cm, 0cm) arc (180:0:0.3cm);
}
},
/pgfplots/line 3/.style={
legend image code/.code={
\draw[##1] plot[smooth] coordinates {
(0cm, 0cm) (0.2cm, -0.2cm) (0.6cm, 0.6cm)
};
}
},
然后将这些样式应用到您的额外条目中\addlegendimage
,因此您必须将这些条目放在每个之前\addplot
。
% extra legend entries
\addlegendimage{line 1}
\addlegendentry{$x+3$}
\addlegendimage{line 2}
\addlegendentry{$\bigl(4-(1+x)^2\bigr)^{1/2}$}
\addlegendimage{line 3}
\addlegendentry{$2x^2/3-8x/3$}
代码和结果
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
compat=1.17,
my style/.append style={
axis x line=middle,
axis y line=middle,
xlabel={$x$},
ylabel={$y$}, axis equal,
legend cell align=left,
legend pos=outer north east,
% empty legend,
},
/pgfplots/line 1/.style={
legend image code/.code={
\draw[##1] (0cm, -0.3cm) -- (0.6cm, 0.3cm);
}
},
/pgfplots/line 2/.style={
legend image code/.code={
\draw[##1] (0cm, 0cm) arc (180:0:0.3cm);
}
},
/pgfplots/line 3/.style={
legend image code/.code={
\draw[##1] plot[smooth] coordinates {
(0cm, 0cm) (0.2cm, -0.2cm) (0.6cm, 0.6cm)
};
}
},
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[my style, minor tick num=1]
% extra legend entries
\addlegendimage{line 1}
\addlegendentry{$x+3$}
\addlegendimage{line 2}
\addlegendentry{$\bigl(4-(1+x)^2\bigr)^{1/2}$}
\addlegendimage{line 3}
\addlegendentry{$2x^2/3-8x/3$}
\addplot[domain=-5:-3] {x+3};
\addplot[domain=-3:1] {(4-(1+x)^2)^(1/2)};
\addplot[domain=1:5] {2*x^2/3-8*x/3};
\addplot[mark=*] coordinates {(1,-1)};
\addplot[mark=*,fill=white, only marks] coordinates {(1,-2)(1,0)};
\end{axis}
\end{tikzpicture}
\end{document}