我正在尝试使用分号作为分隔符、逗号作为句点,从 CSV 文件中用 pgfplots 创建一个图。
我已尝试将其/pgf/number format/read comma as period
作为参数解析为\axis
和\addplot
。
当用于\axis
参数时会被忽略并发生错误,表明需要read comma as period
参数。
我正在使用 MixTex 2.9.6888。
我的代码:
\documentclass{article}
\usepackage{tikz, pgfplots,siunitx}
\usepackage[lotdepth]{subfig}
\RequirePackage{filecontents}
\begin{filecontents*}{data.csv}
Column1;MERENI;FI2;URMS2
;1;3,006;17,86
;2;3,997;20,49
;3;5,006;22,86
;4;6,009;25,31
;5;7,001;27,85
;6;8,005;30,52
;7;9,014;33,19
;8;10,001;35,99
;9;11,01;38,73
;10;12,005;41,52
\end{filecontents*}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}
[
width=\linewidth,
grid=major,
grid style={dashed,gray!30},
title={mytitle},
ylabel=$U_[ef]$,
xlabel=$f$,
%/pgf/number format/read comma as period,
y unit=\si{\volt},
x unit=\si{\hertz},
ymin = 0, xmin = 0
]
\addplot table[x=FI2, y=URMS2, col sep=semicolon, /pgf/number format/read comma as period] {data.csv};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
答案1
在花费(我必须承认,这是很天真的)时间滚动日志寻找“为什么无法pgfplots
读取我的表格“,我发现问题与数据表的格式完全无关。实际上,如果您编译此代码,就会出现完全相同的错误:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ylabel=$U_[ef]$]
\addplot coordinates {(0,0)(1,1)};
\end{axis}
\end{tikzpicture}
\end{document}
这将会中断,因为环境采用由...axis
分隔的可选参数。扫描分隔符时, TeX 将采用同一嵌套级别中的第一个分隔符([
]
]
]
IE不符合要求的是 中的右括号(不在括号内),而符合要求的是 中的右括号U_[ef]
,因此传递给 的文本axis
将是ylabel=$U_[ef
,这会导致不平衡$
...$
然后东西就会被破坏。
要解决此问题,您必须隐藏]
括号,如下所示:
\begin{axis}[ylabel=$U_{[ef]}$]% DO use this
这个
\begin{axis}[{{ylabel=$U_[ef]$}}]% Don't use this
甚至这个
\begin{axis}[ylabel=$U_[ef{]}$]% Don't use this
也会编译,但输出不会像预期的那样,并且至少语法是可疑的。
您还缺少units
要使用的库x unit
和y unit
。之后它将工作:
\documentclass{standalone}
\usepackage{tikz,pgfplots,siunitx}
\usepgfplotslibrary{units}
\RequirePackage{filecontents}
\begin{filecontents*}{data.csv}
Column1;MERENI;FI2;URMS2
;1;3,006;17,86
;2;3,997;20,49
;3;5,006;22,86
;4;6,009;25,31
;5;7,001;27,85
;6;8,005;30,52
;7;9,014;33,19
;8;10,001;35,99
;9;11,01;38,73
;10;12,005;41,52
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
width=\linewidth,
grid=major,
grid style={dashed,gray!30},
title={mytitle},
ylabel=$U_{[ef]}$,
xlabel=$f$,
%/pgf/number format/read comma as period,
y unit=\si{\volt},
x unit=\si{\hertz},
ymin = 0, xmin = 0
]
\addplot table[x=FI2, y=URMS2, col sep=semicolon, /pgf/number format/read comma as period] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}