改变轴时尺寸过大出错。

改变轴时尺寸过大出错。

我成功地更换了我的轴,并设法让它缩放得很好。我改变了主意,然后又改变了主意,所以从那时起,我花了几个小时试图让它工作

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

(将xminxmax改为yminymax,并交换坐标分量。

\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并添加了一些文本,并且与您的例子相比改变了线条的粗细。

在评论中Christian Feuersänger 写道

[W]riting\pgfmathparse{(\tick)}似乎没有任何有用的效果,除了如果变得大于,\pgfmathparse它本身也会产生维度太大。您可以直接安全地使用(而不是)。\tick16000\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}

输出

在此处输入图片描述

相关内容