我想将数据存储在源文件内,而无需创建额外的文件。但是,从外部文件(此处通过 提供)加载数据与使用 将其存储在宏中pgfplot
之间似乎存在差异。filecontents
pgfplotstableread
下面的代码在data.dat
被 s 加载时运行addplot
,当第二个文件名(参见源代码中的注释)被表宏 替换时会导致错误\data
。
\documentclass{article}
\usepackage{siunitx}
\usepackage{pgfplots}\pgfplotsset{compat=1.14, small}
\usepackage{pgfplotstable}
\begin{filecontents*}{data.dat}
x error y label
-0.3294 0.0012 -1 \num{-0.329(2)}
-0.3296 0.0012 -2 -0.330(2)
\end{filecontents*}
\pgfplotstableread{
x error y label
-0.3294 0.0012 -1 \num{-0.329(2)}
-0.3296 0.0012 -2 -0.330(2)
}{\data}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmax=-0.293,
visualization depends on={value \thisrow{label} \as \labela},
nodes near coords align={horizontal}]
\addplot+[only marks, error bars/.cd, x dir=both, x explicit]
table[x=x,y=y,x error=error] {\data};
\addplot [nodes near coords={\labela}, only marks, mark=none]
table[x expr=\pgfkeysvalueof{/pgfplots/xmax}, y=y] {data.dat}; % replacing data.dat with \data results in errors
\end{axis}
\end{tikzpicture}
\end{document}
有没有办法在两种情况下实现相同的结果?任何帮助都值得感激。
答案1
在 @Stefan Pinnow 提交了错误之后,我发现\pgfplotstableread
矩阵图也会出现问题。因此,问题不仅仅在于visualization depends on
。
以下是一个例子:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14, small, scale only axis}
\begin{filecontents*}{data.dat}
x y Val
1 1 1
2 1 0
1 2 0
2 2 1
\end{filecontents*}
\pgfplotstableread{
x y Val
1 1 1
2 1 0
1 2 0
2 2 1
}{\data}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=2cm, height=2cm, enlargelimits=false, title=filecontents]
\addplot[matrix plot, mesh/cols=2, point meta=explicit]
table[meta=Val] {data.dat};
\end{axis}
\begin{axis}[xshift=4cm, width=2cm, height=2cm, enlargelimits=false, title=pgfplotstableread]
\addplot[matrix plot, mesh/cols=2, point meta=explicit]
table[meta=Val] {\data};
\end{axis}
\end{tikzpicture}
\end{document}