如何不绘制第一个/最后一个标记

如何不绘制第一个/最后一个标记

我必须在同一张图中绘制多条线,并使用不同的标记来区分它们。所有这些线都从点 (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}

相关内容