散点图中的误差线颜色

散点图中的误差线颜色

数据文件包含四列:x、y、y 上的误差、类别。类别是一个整数,我输入该整数,scatter src因此我得到了一个图表,其中不同类别有不同的颜色。但是,误差线没有类别颜色。

\begin{tikzpicture}
\begin{axis}[colorbar right, colorbar sampled, colorbar style={samples=3},
             point meta min=-0.5, point meta max=1.5,
             scatter/use mapped color={draw=mapped color, fill=mapped color}]
\addplot[scatter, scatter src=\thisrow{class}, 
      error bars/.cd, y dir=both, y explicit, error bar style={color=mapped color}] 
      table[x=x,y=y,y error=err] {
x y err class
0 0 1   0
1 1 1   0
2 0 1   1
3 2 2   1
};
\end{axis}
\end{tikzpicture}

在这种情况下,误差线是黑色的。如果error bar style={color=mapped color}使用error bar style={color=red},误差线则是红色的。

例子

如何才能获得误差线的正确颜色,例如点的颜色?

答案1

在 PGFplots 中正确实现此功能之前,您可以滥用该scatter/@pre marker code键来绘制彩色误差线。我定义了一个键error bars with mapped color=<error source>,它将设置必要的键,以便

\addplot [
    scatter,
    scatter src=\thisrow{class},
    error bars with mapped color=err,
    error bars/.cd,
        y dir=both,
        y explicit
] 
      table[x=x,y=y,y error=err] {
x y err class
0 0 1   0
1 1 1   0
2 0 1   1
3 2 2   1
};
\end{axis}

会给你

此解决方案存在一些问题:

目前,彩色误差线假设误差是绝对的,并且是正向和负向 y 方向的。不同类型的误差线必须在样式中手动调整error bars with mapped color(仅更改相关样式是不够的error bars)。

绘制绘图标记和彩色误差线时,坐标系会根据数据范围以不寻常的方式缩放(以 10 的幂为增量)。我还没有弄清楚如何自动访问缩放因子,因此您可能需要根据数据范围手动设置此因子。

代码如下:

\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}[colorbar right, colorbar sampled, colorbar style={samples=3},
             point meta min=-0.5, point meta max=1.5,
             scatter/use mapped color={draw=mapped color, fill=mapped color}]
\addplot [
    scatter,
    scatter src=\thisrow{class},
    error bars with mapped color=err,
    error bars/.cd,
        y dir=both,
        y explicit
] 
      table[x=x,y=y,y error=err] {
x y err class
0 0 1   0
1 1 1   0
2 0 1   1
3 2 2   1
};
\end{axis}
\end{tikzpicture}


\end{document}

相关内容