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'});
创建此图:
然后我将其导出到 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}
得出以下图表:
问题:
正如您所看到的,两个背景阴影已成为图例条目……为什么?
有没有更好或更合适的方法来为情节背景着色?
我怎样才能让 pgfplots 保留整个图周围的黑色边框?(不仅仅是 x 轴和 y 轴)
谢谢你们。
答案1
答案:
您需要传递
forget plot
选项以\addplot
从图例中排除背景图;我还注释掉了该选项,并使用键area style
稍微移动了图例(以防止它与图重叠)。at={(0.9,0.95)
legend style
可能存在使用某些坐标系的其他选项,,
axis cs
或axis description cs
,但您的选项很好。将选项添加
axis on top
到轴环境;我还注释掉了选项axis x line*=bottom
和axis 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}