我想借助 matlab2tikz 将表面颜色为绿色的冲浪图从 MATLAB R2014a 导出到 latex。不幸的是,当我运行 pdflatex 时,表面颜色现在从红色变为蓝色,不再是绿色。有没有可能的解决方法?
我的 MATLAB 代码:
[X,Y] = meshgrid(-10:0.5:10);
Z = sin(sqrt(X.^2 + Y.^2) + eps)./(sqrt(X.^2 + Y.^2) + eps);
surf(X,Y,Z,'FaceColor','green','EdgeColor','black')
matlab2tikz('face.tikz', 'height', '\figureheight', 'width', '\figurewidth');
我的乳胶代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{figure}
\centering
\newlength\figureheight
\newlength\figurewidth
\setlength\figureheight{8cm}
\setlength\figurewidth{12cm}
\input{face.tikz}
\end{figure}
\end{document}
提前谢谢了
斯蒂芬
编辑:
MATLAB 生成:
Matlab2TikZ 生成:
抱歉,我首先以为我可以解决我的问题,如果有人可以解决这个“简单”的问题......
答案1
如果我没记错的话,你是在寻找面部的恒定颜色,对吗?
在这种情况下,您可以fill
使用fill=green
或仅提供颜色green
,并且可以通过来配置边缘faceted color=black
。
这是一个与您的文件无关的示例(因为我没有face.tikz
)。但是,可以将必要的更改添加到您的文件中:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
%scaled ticks=false,
]
\addplot3[surf,green,faceted color=black,samples at={-10,-9.5,...,10}]
{sin(deg(sqrt(x^2 + y^2) + 1e-10))/(deg(sqrt(x^2 + y^2) + 1e-10))};
\end{axis}
\end{tikzpicture}
\end{document}
请注意,我添加了\pgfplotsset{compat=1.10}
修复兼容性级别到一些最近的修订版(如果您有旧的 TeX,1.9 也应该这样做)。
将它集成到 .tex 文件中后,您应该认真考虑将其写入\newlength...
前言中,即 之前\begin{document}
。否则您将泄漏内存(TeX 在这方面表现很差)。只能放入\setlength
您的图中。
如果您认为单一的面颜色不是您想要的,那么您可以使用colormap
与 相结合的面颜色faceted color=black
,如下例所示:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
colormap={greenblack}{gray=(0.3) color=(green)},
]
\addplot3[surf,faceted color=black,samples at={-10,-9.5,...,10}]
{sin(deg(sqrt(x^2 + y^2) + 1e-10))/(deg(sqrt(x^2 + y^2) + 1e-10))};
\end{axis}
\end{tikzpicture}
\end{document}
颜色图将最小的 Z 值映射到图中的第一个颜色,将最大的 Z 值映射到图中的最大颜色。颜色图中可以有多种颜色,这些颜色也会参与其中。中等 Z 值将映射到中间的颜色(线性插值)。
答案2
要添加文件内容face.tikz
,请分别仔细查看此文件,这是完美的建议。我应该在第二次询问之前想到这一点。很抱歉......
有两个\addplot3
命令。
\addplot3[%
surf,
shader=faceted,
draw=black,
z buffer=sort,
colormap={mymap}{[1pt] rgb(0pt)=(1,0,0); rgb(1pt)=(0,1,0)},
point meta=explicit,
mesh/rows=70]
table[row sep=crcr,header=false,meta index=3] {%
%
-0.254193271955138 4.792 0.581426160480253 0\\
...
-0.257911289045355 4.793 0.579837400860877 1\\
...
\addplot3[%
surf,
opacity=0.5,
shader=faceted interp,
colormap={mymap}{[1pt] rgb(0pt)=(1,0,0); rgb(1pt)=(0,1,0)},
mesh/rows=10]
table[row sep=crcr,header=false] {%
%
-0.25 4.793 0.565534283150811\\
-0.25 4.79416666666667 0.552986932032553\\ ...
我所要做的就是替换这些行
shader=faceted interp,
colormap={mymap}{[1pt] rgb(0pt)=(1,0,0); rgb(1pt)=(0,1,0)},
在第二个\addplot3
命令中
green,
faceted color=black,
非常感谢 Christian Feuersänger 的帮助!