我有一系列堆积起来的情节:
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\pgfplotsset{compat=1.10}
\tikzexternalize% activate externalization!
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[stack plots=y,
area style,
enlargelimits=false,
ymin=0,
ylabel = {\small time for million dof updates},
xlabel = {\small Order},
grid=major,
legend style={
at={(0.5,-0.10)},
anchor=north
},
width=15.0cm]
\addplot[draw=cyan, fill=cyan] table[x expr=\thisrow{X}^0.33333333333, y expr=\thisrow{A}*10^6/(\thisrow{Y}*\thisrow{Z})]{data.dat} \closedcycle;
\addlegendentry{A}
\addplot[draw=yellow, fill=yellow] table[x expr=\thisrow{X}^0.33333333333, y expr=\thisrow{B}*10^6/(\thisrow{Y}*\thisrow{Z})]{data.dat} \closedcycle;
\addlegendentry{B}
\addplot[draw=gray, fill=gray] table[x expr=\thisrow{X}^0.33333333333, y expr=\thisrow{C}*10^6/(\thisrow{Y}*\thisrow{Z})]{data.dat} \closedcycle;
\addlegendentry{C}
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
此外,我希望其中一个情节不是堆叠在一起的,而是像背景一样。
获得这种效果的最简单方法是保留堆叠的面积图,然后使用线图添加背景图:
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{external}
\pgfplotsset{compat=1.10}
\tikzexternalize% activate externalization!
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[stack plots=y,
area style,
enlargelimits=false,
ymin=0,
ylabel = {\small time for million dof updates},
xlabel = {\small Order},
grid=major,
legend style={
at={(0.5,-0.10)},
anchor=north
},
width=15.0cm]
\addplot[draw=cyan, fill=cyan] table[x expr=\thisrow{X}^0.33333333333, y expr=\thisrow{A}*10^6/(\thisrow{Y}*\thisrow{Z})]{data.dat} \closedcycle;
\addlegendentry{A}
\addplot[draw=yellow, fill=yellow] table[x expr=\thisrow{X}^0.33333333333, y expr=\thisrow{B}*10^6/(\thisrow{Y}*\thisrow{Z})]{data.dat} \closedcycle;
\addlegendentry{B}
\addplot[draw=gray, fill=gray] table[x expr=\thisrow{X}^0.33333333333, y expr=\thisrow{C}*10^6/(\thisrow{Y}*\thisrow{Z})]{data.dat} \closedcycle;
\addlegendentry{C}
\addplot[draw=magenta, fill=magenta, line legend, thick, sharp plot, stack plots=false] table[x expr=\thisrow{X}^0.33333333333, y expr=\thisrow{D}*10^6/(\thisrow{Y}*\thisrow{Z})]{data.dat};
\addlegendentry{D}
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
但绘图似乎仍然受到轴环境区域样式的影响。有没有什么办法让最后一个绘图仅显示为一条简单的线?
我想到的另一种解决方案是开始第二个轴并在那里添加线。但在这种情况下,它不会成为第一个图例的一部分。所以这也不适用。
数据文件看起来应如下所示:
A B C D X Y Z
7 1 1 11 8 1000 3072
11 3 2 18 27 1000 10368
14 2 5 24 64 1000 24576
答案1
正如您在评论中提到的,您可以使用附加轴环境(带有选项axis y line=none,axis x line=none
)。如果您希望这个额外的图出现在第一个轴的图例中,只需自己添加相应的条目,例如:
\addlegendimage{magenta, thick} % Same style as the non-stacked plot
\addlegendentry{entry for the non-stacked plot}
答案2
我已经接近答案了。问题出在
\addplot[draw=magenta, fill=magenta, line legend, thick, sharp plot, stack plots=false] table[x expr=\thisrow{X}^0.33333333333, y expr=\thisrow{D}*10^6/(\thisrow{Y}*\thisrow{Z})]{data.dat};
其中显示fill=magenta
。如果没有填充,它也只绘制一条线。