pgfplots:在表中将误差线大小和不确定区域标记为椭圆?

pgfplots:在表中将误差线大小和不确定区域标记为椭圆?

是否可以绘制一个表格,pgfplots其中标记是椭圆,长半轴和短半轴代表误差的大小?这样数据点就显示为其自己的“不确定区域”。向椭圆边缘淡出会是一个不错的加分项,但纯粹是可选的。

不幸的是,我无法提供“已经尝试过这种方式的示例”,因为我完全不知道从哪里开始。

答案1

您可以使用现有的error bar基础设施将坐标放置在误差椭圆的长轴和短轴的端点,然后使用 Percusse 的简化版本的答案绘制椭圆如何将椭圆拟合到另一个对象中 - 使用交叉点和计算库

这是一个error ellipse实现此目的的样式。您可以使用 键更改误差椭圆的样式error ellipse style。要获得褪色填充,您可以设置error ellipse style={inner color=red, outer color=white}

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots, filecontents}
\usetikzlibrary{calc}

\pgfplotsset{compat=1.5.1}
\newcounter{mark}
\pgfplotsset{
    every error ellipse/.style=draw,
    error ellipse style/.style={
        every error ellipse/.style={#1}
    },
    error ellipse/.style={
        error bars/error mark options={},
        /pgfplots/error bars/draw error bar/.code 2 args={%
            \stepcounter{mark}
            \coordinate [inner sep=0pt] (errormarknode-\themark) at ##2 {};
            \ifnum\themark=4
                \path [/pgfplots/every error ellipse] let
                    \p1=(errormarknode-1),
                    \p2=(errormarknode-2),
                    \p3=(errormarknode-3),
                    \p4=(errormarknode-4)
                in
                    ##1 ellipse [x radius=(\x2-\x1)/2, y radius=(\y4-\y3)/2]
                ;
                \setcounter{mark}{0}
            \fi
        }
    }
}


\begin{filecontents}{data.dat}
x y errorx errory
1 1 0.1 0.2
3 2 1 0.3
5 2 1 1
\end{filecontents}


\begin{document}

\begin{tikzpicture}
\begin{axis}[
    grid=both,
    axis equal % So equal x and y errors result in circles
]
\addplot [
    mark=*, only marks,
    error ellipse,
    error bars/.cd,
        x dir=both, y dir=both,
        x explicit, y explicit
] table [
    x error=errorx, y error=errory
] {data.dat};
\end{axis}
\end{tikzpicture}

\end{document}

相关内容