pgfplots/boxplots:使用绘图颜色作为填充颜色

pgfplots/boxplots:使用绘图颜色作为填充颜色

我想根据用于它们的颜色填充箱线图。例如,对于红色绘制的箱线图,我想用红色填充。你能帮我吗?代码是从另一个复制的话题

\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}

答案1

您可以使用

\addplot +[fill] ...

执行此操作。请注意+选项列表前面的,这意味着这些设置是附加恢复为默认值。

这样做的一个问题是中线将被隐藏,因为它的颜色相同。解决这个问题的一个简单方法是降低填充颜色的不透明度,使用

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

但你实际上不必编辑每个\addplot命令,而是可以添加

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

axis选项。如果你这样做,你的情节将如下所示:

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}

相关内容