如何更改箱线图 n pgfplots 中平均值的颜色?

如何更改箱线图 n pgfplots 中平均值的颜色?

我有一张使用箱线图的简单图表,我正在尝试自定义外观。我已经完成了一部分,但在平均值方面遇到了麻烦。 我目前拥有的我更改了框的颜色和中位数,但平均值有点丢失了。我使用以下方法更改了框:

\pgfplotsset{
   boxplot/draw/box/.code={%
   \draw[/pgfplots/boxplot/every box/.try,color=.!50!white]
     (boxplot box cs:\pgfplotsboxplotvalue{lower quartile},0)
     rectangle
     (boxplot box cs:\pgfplotsboxplotvalue{upper quartile},1)
     ;
   },%
 }

按照手册(添加“,color =。!50!white”)和中位数类似,但是当我尝试对平均值进行同样的事情时,

\makeatletter 
\pgfplotsset{
  boxplot/draw/average/.code={%
    \draw[/pgfplots/boxplot/every average/.try,fill=red]
        \pgfextra
        \pgftransformshift{%
          \pgfplotsboxplotpointabbox
                {\pgfplotsboxplotvalue{average}}
                {0.5}%
        }%
        \pgfuseplotmark{\tikz@plot@mark}%
        \endpgfextra
        ;
     },
}
\makeatother

什么都没改变。我尝试了许多其他方法,包括添加:

\addplot+[boxplot prepared={ % IE11 dotget
  draw position=1,
  every average/.style={fill=red,mark={diamond*}},
  average=100.2, lower whisker=98.1, lower quartile=98.4, median=100.5, upper quartile=101.2, upper whisker=101.5}]
 coordinates { };

但还是没有快乐。

谢谢你的帮助!../戴夫

答案1

只需在命令前添加一个\color命令\draw即可实现所需的结果。

(查看下面的代码,它使用来自 PGFPlots 手册的代码并添加彩色线给出了一个示例。)

% used PGFPlots v1.15
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    \usetikzlibrary{
        pgfplots.statistics,
    }
    \makeatletter
    \pgfplotsset{
        % example copied from the manual
        boxplot/draw/average/.code={%
                \color{.!50!green}          % <-- added
            \draw[/pgfplots/boxplot/every average/.try]
                \pgfextra
                % do NOT use \draw[mark=*] plot coordinates because
                % boxplots uses the same plot handler to draw its
                % outliers.
                \pgftransformshift{%
                    \pgfplotsboxplotpointabbox
                        {\pgfplotsboxplotvalue{average}}
                        {0.5}%
                }%
                \pgfuseplotmark{\tikz@plot@mark}%
                \endpgfextra
            ;
        },
    }
    \makeatother
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
    ]
        \addplot+ [
            boxplot prepared={
                average=100.2,
                lower whisker=98.1,
                lower quartile=98.4,
                median=100.5,
                upper quartile=101.2,
                upper whisker=101.5,
            },
        ] coordinates { };
    \end{axis}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容