轴背景阴影覆盖图例

轴背景阴影覆盖图例

MATLAB 中的此代码:

hold on 
h(1) = area([0 2.5], [125 125]);
h(2) = area([2.5 5], [125 125]);
set(h(1),'FaceColor',[1.0 0.8 0.6],'EdgeColor',[1.0 0.8 0.6]);
set(h(2),'FaceColor',[1.0 0.8 0.4],'EdgeColor',[1.0 0.8 0.4]);
x = [0:1:5];
y1 = x.^2;
y2 = x.^3;
hLine1 = plot(x,y1,'r-o');
hLine2 = plot(x,y2,'g-s');
set(gca,'ylim',[0 125]); %left yaxis range
hleg1 = legend([hLine1 hLine2],{'line1','line2'});

创建此图:

MATLAB 生成的图

然后我将其导出到 tikz 使用matlab2tikz并在此 .tex 文件中进行编译(注意:您需要注释掉 stack plots=y,否则 pgfplots 会出现错误,不知道为什么):

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{plotmarks}
\usepackage{tikz}
\begin{document}

\definecolor{mycolor1}{rgb}{1.00000,0.80000,0.40000}%

\begin{figure}
\begin{tikzpicture}

\begin{axis}[%
width=4.52083333333333in,
height=3.565625in,
area style,
%stack plots=y,
scale only axis,
xmin=0,
xmax=5,
ymin=0,
ymax=125,
axis x line*=bottom,
axis y line*=left,
legend style={draw=black,fill=white,legend cell align=left}
]
\addplot[fill=white!60!orange,draw=white!60!orange] plot table[row sep=crcr]{0  125\\
2.5 125\\
}
\closedcycle;
\addplot[fill=mycolor1,draw=mycolor1] plot table[row sep=crcr]{2.5  125\\
5   125\\
}
\closedcycle;
\addplot [color=red,solid,mark=o,mark options={solid}]
  table[row sep=crcr]{0 0\\
1   1\\
2   4\\
3   9\\
4   16\\
5   25\\
};
\addlegendentry{line1};

\addplot [color=green,solid,mark=square,mark options={solid}]
  table[row sep=crcr]{0 0\\
1   1\\
2   8\\
3   27\\
4   64\\
5   125\\
};
\addlegendentry{line2};

\end{axis}
\end{tikzpicture}%
\end{figure}

\end{document}

得出以下图表:

同一图的乳胶渲染

问题:

  1. 正如您所看到的,两个背景阴影已成为图例条目……为什么?

  2. 有没有更好或更合适的方法来为情节背景着色?

  3. 我怎样才能让 pgfplots 保留整个图周围的黑色边框?(不仅仅是 x 轴和 y 轴)

谢谢你们。

答案1

答案:

  1. 您需要传递forget plot选项以\addplot从图例中排除背景图;我还注释掉了该选项,并使用键area style稍微移动了图例(以防止它与图重叠)。at={(0.9,0.95)legend style

  2. 可能存在使用某些坐标系的其他选项,,axis csaxis description cs,但您的选项很好。

  3. 将选项添加axis on top到轴环境;我还注释掉了选项axis x line*=bottomaxis y line*=left

代码:

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{plotmarks}
\usepackage{tikz}
\begin{document}

\definecolor{mycolor1}{rgb}{1.00000,0.80000,0.40000}%

\begin{figure}
\begin{tikzpicture}

\begin{axis}[%
width=4.52083333333333in,
height=3.565625in,
%area style,
axis on top,
%stack plots=y,
scale only axis,
xmin=0,
xmax=5,
ymin=0,
ymax=125,
%axis x line*=bottom,
%axis y line*=left,
legend style={draw=black,fill=white,legend cell align=left,at={(0.9,0.95)}}
]
\addplot[fill=white!60!orange,draw=white!60!orange,forget plot] plot table[row sep=crcr]{0  125\\
2.5 125\\
}
\closedcycle;
\addplot[fill=mycolor1,draw=mycolor1,forget plot] plot table[row sep=crcr]{2.5  125\\
5   125\\
}
\closedcycle;
\addplot [color=red,solid,mark=o,mark options={solid}]
  table[row sep=crcr]{0 0\\
1   1\\
2   4\\
3   9\\
4   16\\
5   25\\
};
\addlegendentry{line1};

\addplot [color=green,solid,mark=square,mark options={solid}]
  table[row sep=crcr]{0 0\\
1   1\\
2   8\\
3   27\\
4   64\\
5   125\\
};
\addlegendentry{line2};

\end{axis}
\end{tikzpicture}%
\end{figure}

\end{document}

在此处输入图片描述

相关内容