如何将此 Mathematica 代码转换为 pgfplot?

如何将此 Mathematica 代码转换为 pgfplot?

我有一个 Mathematica 代码,我想将其转换为 pgfplot 以获取轮廓,以便我可以将“TikZ”版本与使用 TikZ 制作的其他绘图一起使用。我实际上对 PGFPLOTS 中的多元绘图不太熟悉。代码是:

mycolor[z_] := RGBColor[1, 1 - z, 1 - z];
w0 = 0.1;
w[z_] := w0*Sqrt[1 + (z/0.25)^2];
i[r_, z_] := Sqrt[Exp[-(2*r^2)/(w[z]^2)]];
ContourPlot[i[r, z], {z, -1, 0}, {r, -1, 1}, PlotRange -> All,
PlotPoints -> 50, PlotTheme -> "Scientific",
ColorFunction -> mycolor, ColorFunctionScaling -> False,
Frame -> None, Contours -> 6]

输出为:

输出

更新 1

我几乎得到了我想要的,但由于某些原因,那些黑线并没有出现。

\documentclass[border=3mm]{standalone}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    view={0}{90},
    colormap={custom}{color(0)=(white) color(1)=(red)},
    domain=-1:0,
    y domain=-1:1,
    axis line style={draw=none},
    ticks=none
]
\addplot3 [
contour filled={labels=false,number=6,draw color=black},samples=50
] {sqrt(exp((-2*y^2)/(0.1*sqrt(1 + (x/0.25)^2))^2))};
\end{axis}
\end{tikzpicture}
\end{document}

输出:

输出 2

更新2

draw color如果我使用的功能contour lua,我确实会得到我想要的线条,但它们与其中的边缘不适合contour filled

\documentclass[border=3mm]{standalone}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    view={0}{90},
    colormap={custom}{color(0)=(white) color(1)=(red)},
    domain=-1:0,
    y domain=-1:1,
    axis line style={draw=none},
    ticks=none,
]
\addplot3 [
contour filled={labels=false,number=6},samples=50
] {sqrt(exp((-2*y^2)/(0.1*sqrt(1 + (x/0.25)^2))^2))};
\addplot3 [
contour lua={labels=false,number=6,draw color=black},samples=50
] {sqrt(exp((-2*y^2)/(0.1*sqrt(1 + (x/0.25)^2))^2))};
\end{axis}
\end{tikzpicture}
\end{document}

输出 3

答案1

我不知道不同层次发生了什么,但这看起来像你想要的:

\RequirePackage{luatex85}
\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={0}{90},
colormap={custom}{color(0)=(white) color(1)=(red)},
domain=-1:0, y domain=-1:1,
axis x line=none, axis y line=none,
]
\addplot3 [
contour filled={number=7},
samples=50,
] {sqrt(exp((-2*y^2)/(0.1*sqrt(1 + (x/0.25)^2))^2))};
\addplot3 [
contour lua={labels=false, levels={1/7,2/7,3/7,4/7,5/7,6/7}, draw color=black},
samples=100,
] {sqrt(exp((-2*y^2)/(0.1*sqrt(1 + (x/0.25)^2))^2))};
\end{axis}
\end{tikzpicture}
\end{document}

楔形,带有不同的红色色调

编辑:来自手册:

/pgfplots/contour/number={⟨integer⟩}(初始值为 5)配置轮廓线的数量,该数量应由任何轮廓算法生成。该值适用于轮廓 lua 和轮廓填充。

contour lua对于和,显然处理方式不同contour filled。对于contour filled,域被均匀分割;对于contour lua,轮廓被放置,因此它们以某种方式均匀分布。-因此需要明确给出与 匹配的级别contour filled

相关内容