4

I want to fill boxplots according to color that is used to them. For example, for red drawn boxplots, i want to fill it with red. Can you please help me? The code is copied from another topic.

\documentclass[a4paper]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{statistics}
\pgfplotsset{compat=1.8}

\begin{document}

    \begin{tikzpicture}
    \begin{axis}[
    boxplot/draw direction=y,
    ylabel={AAAAA},
    height=6cm,
    ymin=0,ymax=7,
    cycle list={{red},{black}},
    boxplot={
        %
        % Idea: 
        %  place the 
        %  group 1 at 0.3333 and 0.6666
        %  group 2 at 1.3333 and 1.6666
        %  group 3 at 2.3333 and 2.6666
        %  ...
        % in a formular:
        draw position={1/3 + floor(\plotnumofactualtype/2) + 1/3*mod(\plotnumofactualtype,2)},
        %
        % that means the box extend must be at most 0.33333 :
        box extend=0.2
    },
    % ... it also means that 1 unit in x controls the width:
    x=1cm,
    % ... and it means that we should describe intervals:
    xtick={0,1,2,...,20},
    x tick label as interval,
    xticklabels={%
        {0.15},%
        {0.2},%
        {0.25},%
        {0.3},%
        {0.4},%
        {0.5},%
        {0.6},%
        {0.8},%
        {1.0},
    },
    x tick label style={
        text width=2.5cm,
        align=center
    },
    ]
    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.764\\
        2.938\\
        2.075\\
        1.493\\
        1.285\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.175\\
        2.813\\
        2.006\\
        3.893\\
        2.012\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.621\\
        3.659\\
        6.357\\
        2.851\\
        1.416\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.280\\
        1.482\\
        1.787\\
        2.326\\
        1.795\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.778\\
        2.388\\
        1.016\\
        1.328\\
        1.151\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.028\\
        1.571\\
        4.090\\
        3.875\\
        1.890\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.405\\
        1.188\\
        4.330\\
        3.665\\
        1.439\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.937\\
        1.320\\
        1.357\\
        1.852\\
        1.215\\
    };
    %----------------------%
    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.778\\
        2.388\\
        1.016\\
        1.328\\
        1.151\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.028\\
        1.571\\
        4.090\\
        3.875\\
        1.890\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.405\\
        1.188\\
        4.330\\
        3.665\\
        1.439\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.937\\
        1.320\\
        1.357\\
        1.852\\
        1.215\\
    };

%------------------------------%

        \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.405\\
        1.188\\
        4.330\\
        3.665\\
        1.439\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.937\\
        1.320\\
        1.357\\
        1.852\\
        1.215\\
    };
    %----------------------%
    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.778\\
        2.388\\
        1.016\\
        1.328\\
        1.151\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.028\\
        1.571\\
        4.090\\
        3.875\\
        1.890\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.405\\
        1.188\\
        4.330\\
        3.665\\
        1.439\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.937\\
        1.320\\
        1.357\\
        1.852\\
        1.215\\
    };


    \end{axis}
    \end{tikzpicture}


\end{document}
Torbjørn T.
  • 206,688
user3104352
  • 323
  • 2
  • 11

1 Answers1

3

You can use

\addplot +[fill] ...

to do that. Note the + before the option list, which means that those settings are appended to the default ones.

A problem with that is that the median line will be hidden, because it has the same color. One way of getting around that easily, is to reduce the opacity of the fill color, with

\addplot +[fill,fill opacity=0.5] ...

You don't actually have to edit each \addplot command though, instead you can add

every axis plot/.append style={fill,fill opacity=0.5}

to the axis options. If you do that, your plot will look like this:

output of code

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{statistics}
\pgfplotsset{compat=1.8}

\begin{document}

    \begin{tikzpicture}
    \begin{axis}[
    boxplot/draw direction=y,
    ylabel={AAAAA},
    height=6cm,
    ymin=0,ymax=7,
    cycle list={{red},{black}},
    boxplot={
        %
        % Idea: 
        %  place the 
        %  group 1 at 0.3333 and 0.6666
        %  group 2 at 1.3333 and 1.6666
        %  group 3 at 2.3333 and 2.6666
        %  ...
        % in a formular:
        draw position={1/3 + floor(\plotnumofactualtype/2) + 1/3*mod(\plotnumofactualtype,2)},
        %
        % that means the box extend must be at most 0.33333 :
        box extend=0.2
    },
    % ... it also means that 1 unit in x controls the width:
    x=1cm,
    % ... and it means that we should describe intervals:
    xtick={0,1,2,...,20},
    x tick label as interval,
    xticklabels={%
        {0.15},%
        {0.2},%
        {0.25},%
        {0.3},%
        {0.4},%
        {0.5},%
        {0.6},%
        {0.8},%
        {1.0},
    },
    x tick label style={
        text width=2.5cm,
        align=center
    },
    every axis plot/.append style={fill,fill opacity=0.5}
    ]
    \addplot 
    table[row sep=\\,y index=0] {
        data\\
        2.764\\
        2.938\\
        2.075\\
        1.493\\
        1.285\\
    };

    \addplot 
    table[row sep=\\,y index=0] {
        data\\
        1.175\\
        2.813\\
        2.006\\
        3.893\\
        2.012\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.621\\
        3.659\\
        6.357\\
        2.851\\
        1.416\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.280\\
        1.482\\
        1.787\\
        2.326\\
        1.795\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.778\\
        2.388\\
        1.016\\
        1.328\\
        1.151\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.028\\
        1.571\\
        4.090\\
        3.875\\
        1.890\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.405\\
        1.188\\
        4.330\\
        3.665\\
        1.439\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.937\\
        1.320\\
        1.357\\
        1.852\\
        1.215\\
    };
    %----------------------%
    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.778\\
        2.388\\
        1.016\\
        1.328\\
        1.151\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.028\\
        1.571\\
        4.090\\
        3.875\\
        1.890\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.405\\
        1.188\\
        4.330\\
        3.665\\
        1.439\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.937\\
        1.320\\
        1.357\\
        1.852\\
        1.215\\
    };

%------------------------------%

        \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.405\\
        1.188\\
        4.330\\
        3.665\\
        1.439\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.937\\
        1.320\\
        1.357\\
        1.852\\
        1.215\\
    };
    %----------------------%
    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.778\\
        2.388\\
        1.016\\
        1.328\\
        1.151\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.028\\
        1.571\\
        4.090\\
        3.875\\
        1.890\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        1.405\\
        1.188\\
        4.330\\
        3.665\\
        1.439\\
    };

    \addplot
    table[row sep=\\,y index=0] {
        data\\
        2.937\\
        1.320\\
        1.357\\
        1.852\\
        1.215\\
    };


    \end{axis}
    \end{tikzpicture}


\end{document}
Torbjørn T.
  • 206,688