我成功地更换了我的轴,并设法让它缩放得很好。我改变了主意,然后又改变了主意,所以从那时起,我花了几个小时试图让它工作
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\usepackage{siunitx}
\pgfplotsset{compat=1.7}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ xticklabel={\pgfmathparse{(\tick)}\num[round-mode=places, round-precision=3]{\pgfmathresult}},
scaled y ticks=false,
xlabel={Resonant Magnetic Field [mT]}, ylabel={Residuals [MHz]}]
\addplot[mark size=0.5, only marks,
error bars/.cd,
y dir=both, y explicit,
]
table [y error index=2]
{residuals_glycerin.txt};
\addplot[mark size = 0.5, only marks,color=black]
table [x index = 0, y index= 1]
{residuals_glycerin.txt};
\draw[ultra thin,gray] (axis cs:\pgfkeysvalueof{/pgfplots/xmin},0) -- (axis cs:\pgfkeysvalueof{/pgfplots/xmax},0);
\end{axis}
\end{tikzpicture}
\end{document}
有人能告诉我为什么会出现此错误以及如何修复它吗?我检查了示例,但都无济于事。
-0.00106 328.43799 0.00092
-0.00038 328.18900 0.00092
0.00113 327.92099 0.00092
0.00057 327.70099 0.00092
0.00194 327.43600 0.00092
0.00246 327.19101 0.00092
-0.00389 327.10599 0.00092
0.00005 326.54800 0.00092
-0.00162 326.82001 0.00092
-0.00003 326.54999 0.00092
0.00057 326.30301 0.00092
0.00027 326.07700 0.00092
答案1
我假设你想在位置画一条垂直线x=0
。为此,你必须将\draw
命令更改为
\draw[ultra thin,gray] (axis cs:0,\pgfkeysvalueof{/pgfplots/ymin}) -- (axis cs:0,\pgfkeysvalueof{/pgfplots/ymax});
(将xmin
和xmax
改为ymin
和ymax
,并交换坐标分量。
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\usepackage{siunitx}
\pgfplotsset{compat=1.7}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ xticklabel={\pgfmathparse{(\tick)}\num[round-mode=places, round-precision=3]{\pgfmathresult}},
scaled x ticks=false,
xlabel={Resonant Magnetic Field [mT]}, ylabel={Residuals [MHz]}]
\addplot[mark size=0.5, only marks,
error bars/.cd,
y dir=both, y explicit,
]
table [y error index=2]
{
-0.00106 328.43799 0.00092
-0.00038 328.18900 0.00092
0.00113 327.92099 0.00092
0.00057 327.70099 0.00092
0.00194 327.43600 0.00092
0.00246 327.19101 0.00092
-0.00389 327.10599 0.00092
0.00005 326.54800 0.00092
-0.00162 326.82001 0.00092
-0.00003 326.54999 0.00092
0.00057 326.30301 0.00092
0.00027 326.07700 0.00092
};
\addplot[mark size = 0.5, only marks,color=black]
table [x index = 0, y index= 1]
{
-0.00106 328.43799 0.00092
-0.00038 328.18900 0.00092
0.00113 327.92099 0.00092
0.00057 327.70099 0.00092
0.00194 327.43600 0.00092
0.00246 327.19101 0.00092
-0.00389 327.10599 0.00092
0.00005 326.54800 0.00092
-0.00162 326.82001 0.00092
-0.00003 326.54999 0.00092
0.00057 326.30301 0.00092
0.00027 326.07700 0.00092
};
\draw[ultra thin,gray] (axis cs:0,\pgfkeysvalueof{/pgfplots/ymin}) -- (axis cs:0,\pgfkeysvalueof{/pgfplots/ymax});
\end{axis}
\end{tikzpicture}
\end{document}
答案2
这是 灰线的值为零(0
)。
这远低于实际图(ymin
位于 325.839784)。
对于 TeX 的数学引擎来说,这太远了,因为 TeX 的数学引擎不是为这么长的长度而设计的。此外,这条线会偏离你的论文超过六米。除此之外
,TikZpgfplots
不会检查你的线是否在图中可见(无论哪种方式,它都会被裁剪掉/剪裁掉)。
您需要设置ymin=0
使用是 的值0
或不同的值是。
在下面的例子中,我选择了当前文本ymin
并添加了一些文本,并且与您的例子相比改变了线条的粗细。
[W]riting
\pgfmathparse{(\tick)}
似乎没有任何有用的效果,除了如果变得大于,\pgfmathparse
它本身也会产生维度太大。您可以直接安全地使用(而不是)。\tick
16000
\tick
\pgfmathresult
xticklabel
虽然最后一点当然是正确的,但您也可以使用 PGF 的数学数字打印功能,并使用以下方式更改 s 的样式
xticklabel style={
/pgf/number format/precision=3,
/pgf/number format/zerofill,
},
其输出结果与siunitx
'\num
宏相同。
代码
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{filecontents*}{residuals_glycerin.txt}
-0.00106 328.43799 0.00092
-0.00038 328.18900 0.00092
0.00113 327.92099 0.00092
0.00057 327.70099 0.00092
0.00194 327.43600 0.00092
0.00246 327.19101 0.00092
-0.00389 327.10599 0.00092
0.00005 326.54800 0.00092
-0.00162 326.82001 0.00092
-0.00003 326.54999 0.00092
0.00057 326.30301 0.00092
0.00027 326.07700 0.00092
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xticklabel style={
/pgf/number format/precision=3,
/pgf/number format/zerofill,
},
scaled y ticks=false,
xlabel={Resonant Magnetic Field [mT]},
ylabel={Residuals [MHz]},
]
\addplot[mark size=0.5, only marks, error bars/.cd, y dir=both, y explicit] table [y error index=2] {residuals_glycerin.txt};
\addplot[mark size=0.5, only marks, color=black] table [x index = 0, y index= 1] {residuals_glycerin.txt};
\draw[ultra thick,red] (axis cs:\pgfkeysvalueof{/pgfplots/xmin},\pgfkeysvalueof{/pgfplots/ymin}) -- (axis cs:\pgfkeysvalueof{/pgfplots/xmax},\pgfkeysvalueof{/pgfplots/ymin}) node[midway,above] {I'm a red line at $y = \pgfmathprintnumber{\pgfkeysvalueof{/pgfplots/ymin}}$.};
\end{axis}
\end{tikzpicture}
\end{document}