Wie zeichnet man dieses besondere mexikanische Hutpotenzial?

Wie zeichnet man dieses besondere mexikanische Hutpotenzial?

Ich weiß, dass es hier noch andere Fragen zu mexikanischen Hüten gibt, aber keine der Antworten scheint mir vollständig zu sein. Ich möchte die folgende Abbildung mit TikZ mit ähnlichen Achsen und Beschriftungen zeichnen. Wie kann man das machen?

Mein Minimalbeispiel geht so

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
      \begin{tikzpicture}
        \begin{axis}[  axis lines=center, axis on top = false, 
    view={140}{15},axis equal,title={The Mexican hat potential},
          colormap={blackwhite}{gray(0cm)=(1); gray(1cm)=(0)},
            samples=30,
            domain=0:360,
            y domain=0:1.25,
            zmin=0,
        zmax=0.9,
        xlabel=$\phi_{Im}$,
        ylabel=$\phi_{Re}$,
        zlabel=$V$,
        yticklabels={,,},
        xticklabels={,,},
        zticklabels={,,}
        ]
        \addplot3 [surf, shader=flat, draw=black, fill=white, z buffer=sort] ({sin(x)*y}, {cos(x)*y}, {(y^2-1)^2});
        \end{axis}
    \end{tikzpicture}
\end{document}

Die Ausgabe (siehe unten) gefällt mir nicht, da ich ein rechtshändiges Koordinatensystem mit nach oben zeigender Z-Achse und aus dem Bildschirm heraus zeigender X-Achse wie in der beigefügten Abbildung möchte. Wenn die Striche zu schwer zu implementieren sind, kann ich auch ohne sie auskommen.

Um die Achsen richtig zu bekommen, habe ich den Blickwinkel so angepasst, dass es „richtig“ ist, aber das ist im Moment auch nicht ganz einfach. Und schließlich ist die Beschriftung definitiv falsch, wie man in der Ausgabe sehen kann. Jede Hilfe wäre willkommen.

EDIT: Es scheint einen Fehler bei der Beschriftung zu geben. Ich werde versuchen, wasempfohlen in diesem Thread.

Gescheiterter mexikanischer Hutplan, gescheiterte Etikettierung

Bildbeschreibung hier eingeben

Antwort1

Ist es OK, wenn wir sie zeichnen?

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots,amsmath}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            hide axis,
            %axis lines=middle,
%            axis on top,
%            axis line style={blue,dashed,thick},
%            ymin=-2,ymax=2,
%            xmin=-2,xmax=2,
%            zmin=-2,zmax=2,
            samples=30,
            domain=0:360,
            y domain=0:1.25,clip=false
        ]
        \addplot3 [surf, shader=flat, draw=black, fill=white, z buffer=sort]
           ({sin(x)*y}, {cos(x)*y}, {(y^2-1)^2});
        \draw[blue,thick,dashed] (axis cs:0,0,0) -- (axis cs:1,0,0)
                    node[below,font=\footnotesize]{$\phi_{\text{IM}}$};
        \draw[blue,thick,-stealth] (axis cs:1,0,0) -- (axis cs:1.3,0,0)
                    node[above,font=\footnotesize]{$\hat{y}$};
        \draw[blue,thick,dashed] (axis cs:0,0,0) -- (axis cs:0,-1,0)
                    node[left=2mm,font=\footnotesize]{$\phi_{\text{RE}}$};
        \draw[blue,thick,-stealth] (axis cs:0,-1,0) -- (axis cs:0,-1.5,0)
                    node[right=1mm,font=\footnotesize]{$\hat{x}$};
        \draw[blue,thick,dashed] (axis cs:0,0,0) -- (axis cs:0,0,1)
                    %node[left=2mm,font=\footnotesize]{$\phi_{\text{RE}}$}
                    ;
        \draw[blue,thick,-stealth] (axis cs:0,0,1) -- (axis cs:0,0,1.3)
                    node[right,font=\footnotesize]{$\hat{z}$};
        \end{axis}
    \end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Achtung: Mir ist aufgefallen, dass das untenstehende PDF des Mexican Hat Potential irgendwie beschädigt ist. Ich vermute, der schattierte Ball. Es ist insofern beschädigt, als dass es beim Versuch, es auszudrucken, bei einigen Programmen nicht ausgedruckt werden kann (wie Acroread von UNIX) und bei einigen anderen Programmen tatsächlich nur ein Viertel (der dritte Quadrant) des Balls zusammen mit dem Rest des Dokuments ausgedruckt wird.

Nur für zukünftige Benutzer und als Referenz möchte ich meine Lösung für dieses Problem posten. Obwohl sie nicht die Abbildung des OP reproduziert, ist sie irgendwie sogar noch besser. Hier ist also mein Code, der in dem Sinne extrem manuell ist, dass ich ihn durch Ausprobieren und durch Kopieren und Einfügen aus vielen verschiedenen Quellen erhalten musste:

    \documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfdeclarefunctionalshading{sphere}{\pgfpoint{-25bp}{-25bp}}{\pgfpoint{25bp}{25bp}}{}{
%% calculate unit coordinates
25 div exch
25 div exch
%% copy stack
2 copy 
%% compute -z^2 of the current position 
dup mul exch
dup mul add
1.0 sub
%% and the -z^2 of the light source 
0.3 dup mul
-0.5 dup mul add
1.0 sub
%% now their sqrt product
mul abs sqrt
%% and the sum product of the rest
exch 0.3 mul add
exch -0.5 mul add
%% max(dotprod,0)
dup abs add 2.0 div 
%% matte-ify
0.6 mul 0.4 add
%% currently there is just one number in the stack.
%% we need three corresponding to the RGB values
dup
0.4
}
\begin{document}
      \begin{tikzpicture}
          \begin{axis}[  axis lines=center, axis on top = false, 
    view={140}{25},axis equal,title={The Mexican hat potential},
          colormap={blackwhite}{gray(0cm)=(1); gray(1cm)=(0)},
            samples=50,
            domain=0:360,
            y domain=0:1.25,
            zmin=0,
        xmax=1.5,
        ymax=1.5,
        zmax=1.5,
        x label style={at={(axis description cs:0.10,0.25)},anchor=north},
        y label style={at={(axis description cs:0.9,0.2)},anchor=north},
        z label style={at={(axis description cs:0.5,0.9)},anchor=north},
        xlabel = $\mathrm{Re}(\phi)$,
        ylabel=$\mathrm{Im}(\phi)$,
        zlabel=$V(\phi)$,
        yticklabels={,,},
        xticklabels={,,},
        zticklabels={,,}
        ]
        \addplot3 [surf, shader=flat, draw=black, fill=white, z buffer=sort] ({sin(x)*y}, {cos(x)*y}, {(y^2-1)^2});
        \end{axis}
        \shade[shading=sphere] (3.47,3.5) circle [radius=0.15cm];
        \shade[shading=sphere] (5.2,2.2) circle [radius=0.15cm]; 
        \node[anchor=east] at (4.05,3.71) (text) {A};
  \node[anchor=west] at (5.5,3.0) (description) {B};
  \draw (description) edge[out=180,in=0,<-] (text);
    \end{tikzpicture}
\end{document}

Und hier ist die Ausgabe: Bildbeschreibung hier eingeben

verwandte Informationen