我在 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}