散点图、组、误差线和图例

散点图、组、误差线和图例

我想要一个带有 xy 误差线和图例的分组散点图。因此,每个点都是一个不同的组,具有自己的颜色、标记和图例条目。误差线应与其所属的标记具有相同的颜色。

以下是经过编辑的示例回答:

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\pgfplotsset{
    error bars with mapped color/.style={
        disabledatascaling,
        visualization depends on=\thisrow{#1} \as \error,
        visualization depends on=\thisrow{y} \as \y,
        scatter/@pre marker code/.append style={
            /pgfplots/error bars/.cd,
            error mark options={draw=mapped color},
            error mark=|,
            draw error bar={(0,0)}{(0,\error*100)}, % *100 to correct for the scaling
            draw error bar={(0,0)}{(0,-\error*100)} % might have to be adjusted (0.1,1,10,100,...)
        },
        scatter/@post marker code/.append code={}
    }
}

\begin{tikzpicture}
\begin{axis}[
             scatter/use mapped color={draw=mapped color, fill=mapped color},
         scatter/classes={ a={mark=*,draw=red,fill=red!50},b={mark=square*,draw=green,fill=green!50},c={mark=triangle*,draw=magenta,fill=magenta!50} }
         ]
\addplot [
    scatter,
    only marks,
    scatter src=\thisrow{class},
    scatter src=explicit symbolic,
    error bars with mapped color=err,
    error bars/.cd,
        y dir=both,
        y explicit
] 
      table[x=x,y=y,y error=err,meta=meta] {
x y err class meta
0 0 1   0  a
1 1 .1   0  a
2 0 1   1  b
3 -.5 .2   2  c
};
\legend{Worlds,People,Barnacles}
\end{axis}
\end{tikzpicture}
\end{document}

但您会注意到,误差线的“括号”颜色不正确。我还没有同时创建 x 误差线。

也许,现在已经有一个比@Jake 建议的更好的解决方案了?

在此处输入图片描述

答案1

我认为下面的方法虽然很丑陋,但效果相对较好:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{myerr/.append style={only marks,error bars/.cd, y dir=both,y explicit, x dir=both,x explicit} }
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[myerr] coordinates { (0,0) +- (0.5,0.1)};
\addlegendentryexpanded{Worlds}
\addplot+[myerr] coordinates { (-1,1) +- (0.7,1.1)};
\addlegendentryexpanded{People}
\addplot+[myerr] coordinates { (-2,4) +- (2.7,2.1)};
\addlegendentryexpanded{Barnacles}
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

我刚刚添加了一个addplot包含每个点的错误详细信息的程序。颜色、图例等由 负责pgfplots,我可以使用生成数据点的同一程序(在我的情况下是 )自动执行此类代码Julia

相关内容