Matlab2Tikz FaceColor 曲面图

Matlab2Tikz FaceColor 曲面图

我想借助 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 生成: MATLAB

Matlab2TikZ 生成: 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 的帮助!

相关内容