Pgfplots:向图例添加形状时出现问题

Pgfplots:向图例添加形状时出现问题

我正在尝试在直方图中的图例文本旁边放置两个蓝色和红色的框。我尝试了几种方法,包括这个关联。不幸的是,链接中的代码无法编译。我有 pgf 版本 1.7。非常不幸的是,该链接中的代码对我来说不起作用。它看起来非常灵活和强大。

以下是我使用的代码:

\begin{tikzpicture}
\begin{axis}[
    width=\figurewidth,
    height=\figureheight,
    scale only axis,
    xmode=log,
    ymode=log,
    xlabel = {Velocity Divergency},
    x tick label as interval=false,
    xtick={},
    xtickten={-18,-16,...,4},
    yticklabels={$0.0001\%$, $0.001\%$, $0.01\%$, $0.1\%$, $1\%$, $10\%$, $100\%$},
    xmin=1e-18, xmax=1e+4,
    ymin=1e-5,ymax=1,
    grid=none,
    ymajorgrids,
    log origin=infty,
    bar shift=0pt,
    % align right:
    legend style={
                  cells={anchor=west},
                  legend pos=outer north east,
    }
]
\addplot [fill=blue!100,
    ybar interval] table [x=Lower, y=Count] {
Lower Upper Count
9.9e-15 1e-14      0.1231
1e-14   1e-13      1e-15
1e-13   1e-12      0.0000
1e-12   1e-11      0.0000
1e-11   1e-10      0.0000
1e-10   1e-9       0.0000
1e-9    1e-8       0.0000
1e-8    1e-7       0.0001
1e-7    1e-6       0.0001
1e-6    1e-5       0.0004
1e-5    1e-4       0.0010
1e-4    1e-3       0.0048
1e-3    1e-2       0.0313
1e-2    1e-1       0.1562
1e-1    1e+0       0.3464
1e+0    1e+1       0.2684
1e+1    1e+2       0.0645
1e+2    1e+3       0.0036
1e+3    1e+4       1e-15
};
\addlegendentry[blue]{Interp}
\addplot [fill=red!100, ybar interval] table [x=Lower, y=Count] {
Lower Count
1e-17 1
1e-16 1
};
\addlegendentry[red]{Div-free}
\end{axis}
\end{tikzpicture}

上述代码执行结果如下图所示:在此处输入图片描述

有人可以帮我在图例文字旁边添加两个实心矩形,以便读者轻松找到相应的数据集,类似于以下内容?

在此处输入图片描述

答案1

这里的答案很简单,因为pgfplots定义了一个名为的键area legend(请参阅文档第 173 页)。

然后你的代码插入mwe:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    width=11cm,
    height=7cm,
    scale only axis,
    xmode=log,
    ymode=log,
    xlabel = {Velocity Divergency},
    x tick label as interval=false,
    xtick={},
    xtickten={-18,-16,...,4},
    yticklabels={$0.0001\%$, $0.001\%$, $0.01\%$, $0.1\%$, $1\%$, $10\%$, $100\%$},
    xmin=1e-18, xmax=1e+4,
    ymin=1e-5,ymax=1,
    grid=none,
    ymajorgrids,
    log origin=infty,
    bar shift=0pt,
    area legend, % notice the key here
    % align right:
    legend style={
                  cells={anchor=west},
                  legend pos=outer north east,
    }
]
\addplot [fill=blue!100,
    ybar interval] table [x=Lower, y=Count] {
Lower Upper Count
9.9e-15 1e-14      0.1231
1e-14   1e-13      1e-15
1e-13   1e-12      0.0000
1e-12   1e-11      0.0000
1e-11   1e-10      0.0000
1e-10   1e-9       0.0000
1e-9    1e-8       0.0000
1e-8    1e-7       0.0001
1e-7    1e-6       0.0001
1e-6    1e-5       0.0004
1e-5    1e-4       0.0010
1e-4    1e-3       0.0048
1e-3    1e-2       0.0313
1e-2    1e-1       0.1562
1e-1    1e+0       0.3464
1e+0    1e+1       0.2684
1e+1    1e+2       0.0645
1e+2    1e+3       0.0036
1e+3    1e+4       1e-15
};
\addlegendentry[blue]{Interp}
\addplot [fill=red!100, ybar interval] table [x=Lower, y=Count] {
Lower Count
1e-17 1
1e-16 1
};
\addlegendentry[red]{Div-free}
\end{axis}
\end{tikzpicture}
\end{document}

结果:

在此处输入图片描述

笔记

在我的 mwe 中我没有使用你的\figurewidth\figureheight,但你可以轻松地再次替换它们。

相关内容