\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}