我需要打印每个点的 Y 值,并使用逗号作为小数分隔符。请参阅我的 MWE。数据以 .csv 格式提供在我的文件夹中。
\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\usepgfplotslibrary{units}
\usepackage{siunitx}
\sisetup{
%strict,
output-decimal-marker={,},
exponent-product=\cdot,
detect-all
}
\pgfplotstableread[col sep=tab]{
X Y
0 0.03
63 0.04
118 0.09
188 0.38
210 0.47
267 0.89
327 1.50
362 1.82
}{\growth}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
/pgf/number format/.cd,
use comma,
width=\linewidth,
grid=major,
grid style={dashed,gray!30},
xlabel=Zeit,
ylabel=Optische Dichte,
x unit=\si{\minute},
y unit=,
ymode=log,
% xtick={0,100,150,200,300},
x tick label style={rotate=90,anchor=east},
legend cell align=left,
legend pos=north west
]
\addplot[
thick,
mark=*,
mark options={fill=red},
nodes near coords,
point meta=explicit symbolic,
every node near coord/.style={anchor=-40},
color=blue,
] table [x=X,y=Y,col sep=tab,meta index=2] {\growth};
\end{axis}
\end{tikzpicture}
\end{document}
我曾经认为
/pgf/number format/.cd,
use comma,
在 命令中every node near coord/.style
,但我无法获得小数分隔符的正确格式。
提前致谢
答案1
您的问题是您列出了point meta=explicit symbolic
,这意味着pgfplots
将 视为point meta
字符串,并且不用于\pgfmathprintnumber
打印。您可以改为将选项point meta=explicit
(不是explicit symbolic
)与 一起使用以/pgf/number format/use comma
获得所需的结果。请注意,您需要指定explicit
因为 否则,nodes near coords
将打印坐标的对数变换值y
。
请注意,我已修复了您的 MWE 中的一些错误。具体来说,SX 网站不保存制表符,因此您的表格 ( col sep=tab
) 的规范不太正确(无论如何,我认为会将任何空格视为列分隔符,因此在数据之间没有空格的情况下,无需pgfplots
指定),并且需要为而不是。tab
meta index
1
2
我还将轴改为 asemilogyaxis
而不是使用ymode=log
,并删除了/pgf/number format/.cd
选项第一行中的,以防它导致问题(虽然说实话,我认为它实际上并没有在那里做任何事情)。
\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\pgfplotsset{compat=1.11}
\usepgfplotslibrary{units}
\usepackage{siunitx}
\sisetup{
%strict,
output-decimal-marker={,},
exponent-product=\cdot,
detect-all
}
\pgfplotstableread{
X Y
0 0.03
63 0.04
118 0.09
188 0.38
210 0.47
267 0.89
327 1.50
362 1.82
}{\growth}
\begin{document}
\begin{tikzpicture}
\begin{semilogyaxis}[
/pgf/number format/use comma,
width=\linewidth,
grid=major,
grid style={dashed,gray!30},
xlabel=Zeit,
ylabel=Optische Dichte,
x unit=\si{\minute},
y unit=,
% xtick={0,100,150,200,300},
x tick label style={rotate=90,anchor=east},
legend cell align=left,
legend pos=north west,
]
\addplot[
thick,
mark=*,
mark options={fill=red},
nodes near coords,
point meta=explicit,
every node near coord/.append style={anchor=-40, /pgf/number format/.cd, use comma, fixed, precision=2},
color=blue,
] table [x=X,y=Y,col sep=tab,meta index=1] {\growth};
\end{semilogyaxis}
\end{tikzpicture}
\end{document}
答案2
完成上述siunitx
设置后,您可以使用
nodes near coords={$\num{\pgfplotspointmeta}$},
代码:
\documentclass{standalone}
\usepackage{pgfplots,pgfplotstable}
\usepgfplotslibrary{units}
\usepackage{siunitx}
\sisetup{
%strict,
output-decimal-marker={,},
exponent-product=\cdot,
detect-all
}
\pgfplotsset{compat=1.11}
\pgfplotstableread[col sep=space]{
X Y
0 0.03
63 0.04
118 0.09
188 0.38
210 0.47
267 0.89
327 1.50
362 1.82
}{\growth}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
/pgf/number format/.cd,
use comma,
width=\linewidth,
grid=major,
grid style={dashed,gray!30},
xlabel=Zeit,
ylabel=Optische Dichte,
x unit=\si{\minute},
y unit=,
ymode=log,
xtick={0,100,150,200,300},
x tick label style={rotate=90,anchor=east},
legend cell align=left,
legend pos=north west
]
\addplot[
thick,
mark=*,
mark options={fill=red},
nodes near coords,
point meta=explicit symbolic,
nodes near coords={$\num{\pgfplotspointmeta}$},
every node near coord/.style={anchor=-40},
color=blue,
] table [x=X,y=Y,col sep=space,meta index=1] {\growth};
\end{axis}
\end{tikzpicture}
\end{document}