我想在我的图中添加水平误差线,如下图所示。 生成上述图的代码是:
\begin{tikzpicture}[thick,scale=1, every node/.style={transform shape},trim axis left, trim axis right]
\pgfplotsset{width=16cm,
compat=1.3,
legend style={font=\footnotesize}}
\begin{axis}[
xlabel={ $1/r^2$[\SI{}{1\per\centi\square\meter}]},
ylabel={$i$[\SI{}{\micro\ampere}]},
%extra x ticks={3.5},
%extra tick style={grid=major,major grid style={red,thick},
%tick label style={
%rotate=90,anchor=east}},
%extra x tick labels={Actual},
legend cell align=left,
legend pos=north west],
\addplot[only marks,
error bars/.cd,
y dir=both,
y explicit,
every nth mark=1
] table[x=X,y=Y,y error=Z]{
X Y Z
0.01000 56.0 2
0.008264 41.0 3
0.006944 31.0 4
0.005917 24.0 5
0.005102 19.0 6
0.004444 15.5 7
0.003906 12.5 9
0.003460 10.5 9
0.003086 9.0 3
0.002770 8.0 2
};
\addlegendentry{Punkty pomiarowe} %
%\draw[ultra thin] (axis cs:3.5,\pgfkeysvalueof{/pgfplots/ymin}) -- (axis cs:3.5,\pgfkeysvalueof{/pgfplots/ymax});
\end{axis}
\end{tikzpicture} \\
创建误差线的函数是:
\newcounter{marknumber}
\pgfplotsset{
error bars/every nth mark/.style={
/pgfplots/error bars/draw error bar/.prefix code={
\pgfmathtruncatemacro\marknumbercheck{mod(floor(\themarknumber/2),#1)}
\ifnum\marknumbercheck=0
\else
\begin{scope}[opacity=0]
\fi
},
/pgfplots/error bars/draw error bar/.append code={
\ifnum\marknumbercheck=0
\else
\end{scope}
\fi
\stepcounter{marknumber}
}
}
}
答案1
不清楚你的问题是什么(我猜是在标题里,不是吗?)。我猜你想添加水平误差线,即:除了图中已有的垂直误差线之外。
我认为以下内容可能就是您正在寻找的内容:
\documentclass{minimal}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}
\addplot+[error bars/.cd,
x dir=both,x explicit relative,
y dir=both,y explicit relative,
]
table[x=x,y=y,x error=xerror,y error=yerror]
{
x y xerror yerror
32 32 0 0.1
64 64 0 0.5
128 128 0.3 0.25
1024 1024 0.2 0.12
32068 32068 0.6 0.4
64000 64000 0.6 0.26
128000 128000 0.6 0.16
};
\end{loglogaxis}
\end{tikzpicture}
\end{document}
您可以使用以下方法添加x
和误差线y
\addplot+[error bars/.cd,
x dir=both,x explicit relative,
y dir=both,y explicit relative,
]
否则,如果您只想将垂直误差线切换为水平误差线,您只需简单地写下:
table[x=X,y=Y,x error=Z]