我正在尝试在直方图中的图例文本旁边放置两个蓝色和红色的框。我尝试了几种方法,包括这个关联。不幸的是,链接中的代码无法编译。我有 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
,但你可以轻松地再次替换它们。