根据表条目放置节点

根据表条目放置节点

读完表格并按要求绘制数据后,我需要在图表中添加一些注释。这些注释需要手动添加,因为它们不包含在我从同事那里收到的数据库导出中。

在当前的数据/表格格式中,仅需要注释从第一行表格读取的数据。为了实现这一点,我想出了两种方法:

  1. 手动将 a 放置\node在所需坐标处(我的 MWE 中的蓝色注释):方法简单,但我无法使用表中的坐标。可以使用以下方法从表中读取元素pgfplotstable 的\pgfplotstablegetelem,但我还没弄清楚如何使用读取的值以供以后使用。
  2. node使用 绘制数据后放置 a \addplot。我的 MWE 的相应部分受到以下启发:杰克的回答,但将节点放置在绘图的末尾,而不是开头。
\documentclass{article}

\usepackage{filecontents}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

\pgfplotsset{compat=newest}


\begin{filecontents}{sample_data.csv}
    x     y
    0.5   0
    0.5   0.7
\end{filecontents}


\begin{document}
    \begin{tikzpicture}
        \begin{axis}[xmin = 0, xmax = 1, ymin = 0, ymax = 1]
            \pgfplotstableread{sample_data.csv}\mydata;

            \addplot+[mark=none, dashed, gray] table [
                x = x,
                y = y,
            ] {\mydata};

            \node[blue, anchor=south west] at (0.5, 0) {a};  % <-- '0.5, 0' coordinates of node (blue) should be dynamically read from table (first row)
            
            \addplot+[red, mark=none, draw=none] table[x=x, y=y] {\mydata} node[anchor=south west] {a}; % <-- places node (red) at last point of table, but should be placed at first point
        \end{axis}
    \end{tikzpicture}
\end{document}

答案1

改编

您可以使用可选键沿着情节线移动节点[pos=<fraction>]

结果

在此处输入图片描述

代码

\documentclass{article}

\usepackage{filecontents}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

\pgfplotsset{compat=newest}

\begin{filecontents}{sample_data.csv}
    x     y
    0.5   0
    0.5   0.7
\end{filecontents}

\begin{document}
    \begin{tikzpicture}
        \begin{axis}[xmin = 0, xmax = 1, ymin = 0, ymax = 1]
            \pgfplotstableread{sample_data.csv}\mydata;

            \addplot+[mark=none, dashed, gray] table [
                x = x,
                y = y,
            ] {\mydata};
            
            \addplot+[ mark=none, draw=none] table[x=x, y=y] {\mydata} node[anchor=south west, pos=0, blue] {a} node[anchor=south west, pos=1, red] {b};
        \end{axis}
    \end{tikzpicture}
\end{document}

相关内容