我有一个包含要绘制的点的文件。我想绘制这些点,然后用不同的颜色在最后一个点和第一个点之间绘制一条连接线。这是我现在拥有的代码片段,实际上数据位于单独的文件中。
\documentclass{article}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
0 0
0 0.75
-0.3 2.2
1 1.9
1 1
1.3 0
2.2 0.2
2 1
2.1 2.3
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot [mark=o, mark size=2pt, black, thick] file {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}
由此得到以下图片:
我想要得到以下信息:
有没有办法在代码中实现这一点,而无需添加仅包含第一个点和最后一个点的另一个文件?
答案1
skip coords between index
通过在图表中添加第二个绘图,可以轻松完成此操作:
\pgfplotstablegetrowsof{data.csv}\pgfmathsetmacro\idxend{\pgfmathresult-1}
\addplot [mark=none, mark size=2pt, red, thick, skip coords between index={1}{\idxend}] file {data.csv};
完整代码:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{filecontents}{data.csv}
0 0
0 0.75
-0.3 2.2
1 1.9
1 1
1.3 0
2.2 0.2
2 1
2.1 2.3
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[mark=o, mark size=2pt, black, thick] file {data.csv};
\pgfplotstablegetrowsof{data.csv}\pgfmathsetmacro\idxend{\pgfmathresult-1}
\addplot[mark=none, mark size=2pt, red, thick, skip coords between index={1}{\idxend}] file {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}