使用 MATLAB area() 遮蔽 matlab2tikz 中的图形错误

使用 MATLAB area() 遮蔽 matlab2tikz 中的图形错误

我在 MATLAB 中生成一个图形并希望对区域进行阴影处理。因此我使用 area() 命令并将其设置为按正确顺序显示。

该图的 MATLAB 代码:

hold on 
x = 0:1:5;
y = sin(x);
plot(x,y);
h(1) = area([0.2 0.8], [2 2],'EdgeColor',[1.0 0.8 0.4]);
h(2) = area([0.8 1.5], [2 2],'EdgeColor',[1.0 0.6 0.2]);
set(h(1),'FaceColor',[1.0 0.8 0.4]);
set(h(2),'FaceColor',[1.0 0.6 0.2]);
set(gca,'children',flipud(get(gca,'children')));

构成了这个华丽的情节:

在此处输入图片描述

完整的 latex MWE(从 matlab2tikz 生成的 .tikz 代码将位于tikzpicture环境之间:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\begin{figure}
\begin{tikzpicture}
\begin{axis}[%
width=4.5in,
height=3.5in,
area style,
stack plots=y,
scale only axis,
xmin=0,
xmax=5,
ymin=-1,
ymax=2,
axis x line*=bottom,
axis y line*=left
]
\addplot[fill=white!20!orange,draw=white!20!orange] plot table[row sep=crcr]{0.8    2\\
1.5 2\\
}
\closedcycle;
\addplot[fill=mycolor1,draw=mycolor1] plot table[row sep=crcr]{0.2  2\\
0.8 2\\
}
\closedcycle;
\addplot [color=blue,solid,forget plot]
  table[row sep=crcr]{0 0\\
1   0.841470984807897\\
2   0.909297426825682\\
3   0.141120008059867\\
4   -0.756802495307928\\
5   -0.958924274663138\\
};
\end{axis}
\end{tikzpicture}%
\end{figure}

\end{document}

当我尝试在 Latex 中编译它时出现错误:

! Package pgfplots Error: Sorry, pgfplots expects stacked plots to have exactly the same number of coordinates.

我认为这是 matlab2tikz 中的一个故障,所以我会报告它,但无论如何我不知道如何针对我的示例修复它。

谢谢

答案1

这是您所期望的吗?删除后stack plots=y,它编译通过。由于代码没有mycolor1定义。此解决方案使用不同的颜色代替。

在此处输入图片描述

代码

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

\begin{document}

\begin{figure}
\begin{tikzpicture}
\begin{axis}[%
width=4.5in,
height=3.5in,
area style,
%stack plots=y,
scale only axis,
xmin=0,
xmax=5,
ymin=-1,
ymax=2,
axis x line*=bottom,
axis y line*=left
]
\addplot[fill=white!20!orange,draw=white!20!orange] plot table[row sep=crcr]{0.8 2\\
1.5 2\\
}
\closedcycle;
\addplot[fill=yellow!20!red,draw=yellow!20!red] plot table[row sep=crcr]{0.2  2\\
0.8 2\\
}
\closedcycle;
\addplot [color=blue,solid,forget plot]
  table[row sep=crcr]{0 0\\
1   0.841470984807897\\
2   0.909297426825682\\
3   0.141120008059867\\
4   -0.756802495307928\\
5   -0.958924274663138\\
};
\end{axis}
\end{tikzpicture}%
\end{figure}

\end{document}

相关内容