使用 csvreader 将节点放置在 tikz 轴上

使用 csvreader 将节点放置在 tikz 轴上

\csvreader我正在尝试使用包中的命令将节点放置在 TikZ 轴内simplecsv。但是,不知何故,以下操作不起作用:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{csvsimple}
\usepackage{pgfplots}
\usepackage{tikz}

\title{Test}

\begin{document}

\begin{filecontents*}{xx.csv}
xv,yv,z
1.0,2.2,3.0
2.0,3.2,1.0
\end{filecontents*}

    \maketitle
    
    \begin{tikzpicture}
        \begin{axis}[
            xmin=0,
            ymin=0,
            xmax=4,
            ymax=4,
        ]
            \node at (axis cs:2, 2) {x};
            \csvreader[head to column names]{xx.csv}{}{
                \node at (axis cs:\xv, \yv) {y};
            }
        \end{axis}
    \end{tikzpicture}
\end{document}

我总是得到一个Argument of \pgfmathfloatparse@@ has an extra }.。有人发现这里出了什么问题吗?我已经尝试了一段时间了。

我已将此代码片段放在 Overleaf 上。请随意在那里进行调查:https://www.overleaf.com/read/gdczbgvqmrzt

答案1

这并没有真正回答上述问题,但它展示了如何使用nodes near coords\SI从你对 Nico 的回答的评论来看,这似乎就是你最终想要的。如果这不是你需要的,或者你觉得这不是合适的地方,我会删除它。

\documentclass{article}
\usepackage{pgfplots}
\usepackage{siunitx}

\begin{document}

\begin{filecontents*}{xx.csv}
xv,yv,z
1.0,2.2,3.0
2.0,3.2,1.0
\end{filecontents*}
    
    \begin{tikzpicture}
        \begin{axis}[
            xmin=0,
            ymin=0,
            xmax=4,
            ymax=4,
        ]
        \addplot [
            mark=none,
            draw=none,
            nodes near coords={\SI{\pgfplotspointmeta}{\m}}
            ] 
            table[
              x=xv,
              y=yv,
              meta=z,
              col sep=comma,
              point meta=explicit symbolic
              ] {xx.csv};
            
        \end{axis}
    \end{tikzpicture}
\end{document}

答案2

\documentclass[tikz]{standalone}
\usepackage{pgfplots, csvsimple, siunitx}
\pgfplotsset{compat=newest}

\begin{document}
\begin{filecontents*}{xx.csv}
 xv,yv,z
 1.0,2.2,3.0
 2.0,3.2,1.0
\end{filecontents*}
            
\begin{tikzpicture}
  \csvreader[head to column names]{xx.csv}{xv=\x,yv=\y,z=\val}{
    \begin{axis}[
         xmin=0,
         ymin=0,
         xmax=4,
         ymax=4
         ]
    \node at (axis cs:2, 2) {x};
    \node[draw] at (axis cs:\x,\y){\SI{\val}{\metre\per\second}};
    \end{axis}
}
\end{tikzpicture}
\end{document}
     

在此处输入图片描述

相关内容