我必须在同一张图中绘制多条线,并使用不同的标记来区分它们。所有这些线都从点 (0,1) 开始,到 (1,0) 结束,这也是轴的极限。
我宁愿不绘制第一个和最后一个标记,即 (1,0) 和 (0,1) 中的标记,但我不知道如何在不使用技巧的情况下做到这一点,例如仅为标记使用分隔线。
另外,是否可以在连接两个坐标的直线上添加标记?例如,我想在连接坐标 (0,1) 和 (0.4,0.6) 的线上放置额外的标记,而不必指示坐标。
这是一个最简单的例子。
\documentclass{article}
\usepackage{pgf,pgfsys,pgffor}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0, xmax=1, ymin=0, ymax=1]
\addplot coordinates {(0,1) (0.2,0.7) (0.5,0.5) (0.7,0.2) (1,0)};
\addplot coordinates {(0,1) (0.4,0.6) (0.5,0.5) (0.6,0.4) (1,0)};
\end{axis}
\end{tikzpicture}
\end{document}
这是一个更复杂的例子。我已将每行的坐标保存在不同的文件中(此处包含在文件内容中)。
\documentclass{article}
\usepackage{pgf,pgfsys,pgffor}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\usepackage{filecontents}
\begin{filecontents}{line1.dat}
0.0000000e+000 1.0000000e+000
6.8496983e-001 9.2401472e-001
7.0716535e-001 9.1958307e-001
7.2173728e-001 9.1351472e-001
7.3036908e-001 9.0720588e-001
7.4013221e-001 9.0099625e-001
7.4786697e-001 8.9202456e-001
7.5596517e-001 8.8392894e-001
7.6269674e-001 8.7239867e-001
7.7155769e-001 8.5579528e-001
7.8143617e-001 8.2917002e-001
8.3316668e-001 7.8038268e-001
8.5914322e-001 7.7066400e-001
8.7527488e-001 7.6191438e-001
8.8414461e-001 7.5456052e-001
8.9422721e-001 7.4724438e-001
9.0125715e-001 7.3818180e-001
9.0871819e-001 7.2991961e-001
9.1381216e-001 7.1925515e-001
9.1990775e-001 7.0431023e-001
1.0000000e+000 0.0000000e+000
\end{filecontents}
\begin{filecontents}{line2.dat}
0.0000000e+000 1.0000000e+000
1.2500000e-001 3.2500000e-001
2.7083333e-001 2.7083333e-001
3.2500000e-001 1.2500000e-001
1.0000000e+000 0.0000000e+000
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\pgfplotstableread{line1.dat}\lineA
\pgfplotstableread{line2.dat}\lineB
\begin{axis}[xmin=0, xmax=1, ymin=0, ymax=1]
\addplot[red,mark=o, mark repeat={5}] table \lineA;
\addplot[cyan,mark=square] table \lineB;
\end{axis}
\end{tikzpicture}
\end{document}
答案1
-- (axis cs:1,0) (axis cs:0,1) -- (current plot begin)
您可以通过在命令末尾添加将绘图连接到角落\addplot
。此表达式还可以用样式包装以使其更容易使用:
\tikzset{
connect to corners/.style={
insert path={-- (axis cs:1,0) (axis cs:0,1) -- (current plot begin)}
}
}
对于您的第二个请求,您可以使用数学表达式而不是坐标列表:
\addplot [red, mark=*, samples at={0.4,0.6}] {1-x} [connect to corners];
完整代码如下:
\documentclass{article}
\usepackage{pgf,pgfsys,pgffor}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\begin{document}
\tikzset{
connect to corners/.style={
insert path={-- (axis cs:1,0) (axis cs:0,1) -- (current plot begin)}
}
}
\begin{tikzpicture}
\begin{axis}[xmin=0, xmax=1, ymin=0, ymax=1]
\addplot coordinates {(0.2,0.7) (0.5,0.5) (0.7,0.2)} [connect to corners];
\addplot [red, mark=*, samples at={0.4,0.6}] {1-x} [connect to corners];
\end{axis}
\end{tikzpicture}
\end{document}