Anzeige:
Ergebnis 1 bis 11 von 11

Thema: Bei pdfplot 3D- Grafik fehlt ein Stück

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.02.2012
    Beiträge
    48

    Bei pdfplot 3D- Grafik fehlt ein Stück

    Hallo,

    ich möchte gerne die Funktion -1/r (in 3D Polarkoordinaten) darstellen.
    In Anlehnung an dem Beispiel auf Seite 141 im PGFPLOT Manual habe ich dazu unten stehen Code geschrieben (Umwandlung x,y im Polarkoordinaten usw).
    Die Grafik wird auch fast richtig dargestellt, aber es fehlt ein Stück (siehe jpg-Files)
    Bei der Fehlersuche ist mir aufgefallen, dass dies auch bei anderen Funktionen, die im negativen z-Bereich liegen passiert (z.B. f(r)=-r). Bei positiven Funktionen tritt der Fehler nicht auf. Hat jemand eine Erklärung?

    Vielen Dank!

    Code:
    \documentclass[10pt,ngerman,a4paper]{article}
    
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage[a4paper]{geometry}
    \geometry{verbose,tmargin=2cm,bmargin=3cm,lmargin=2cm,rmargin=2cm,footskip=1cm}
    \setlength{\parskip}{\smallskipamount}
    \setlength{\parindent}{0pt}
    \usepackage{units}
    
    
    
    %--------------------------------------------------------------------------------------------------------------
    
    \usepackage{pgfplots}
    \pgfplotsset{compat=1.15}  			% komptibilitätseinstellung
    \usepackage{lmodern} 						% Notwendig fuer gute Schriften (nicht verpixelt)
    
    %------------------------------------------------------------------------------------
    
    \begin{document}
    
    \begin{tikzpicture}
    \begin{axis}[
    %     clip=true,
    	width=20cm,
    	height=20cm,
    	xtick=\empty,
    	ytick=\empty,
    	ztick=\empty,
    %	xlabel={$x$}, ylabel={$y$}, zlabel={$E_{\mathrm{pot}}$},
    	axis lines=center,
    	axis on top,
    %	xmin=-1.8, xmax=2.3,
    %	ymin=-1.8, ymax=2,
    	samples=10,
    	samples y=40,
    	domain=0.2:1.7,		% Ist in Polarkoordinaten eigentlich der Radius 
    	y domain=0:360,  	% Ist in Polarkoordinaten eigentlich der Winkel 
    	enlarge z limits={value=0.7,upper}, % Längere Z-Achse nach oben
    %	z label style={at={(ticklabel* cs:1.01)}, anchor=south, }, %Achsenbeschriftung aussen
    %	x label style={at={(ticklabel* cs:1.01)}, anchor=west, }, %Achsenbeschriftung aussen
    %	y label style={at={(ticklabel* cs:1.01)}, anchor=west, }, %Achsenbeschriftung aussen
    	colormap/blackwhite,
    	]
     \addplot3 [surf] ({x*cos(y)},{x*sin(y)},{-1/x}); % Gibt Problem
     %
     %\addplot3 [surf] ({x*cos(y)},{x*sin(y)},{-x}); % Gibt auch Problem
     % \addplot3 [surf] ({x*cos(y)},{x*sin(y)},{x}); % Gibt kein Problem
    \end{axis}
    \end{tikzpicture} 
    
    \end{document}
    pdfplot Problem - x.jpgpdfplot Problem -1 durch x.jpg
    Geändert von msthab (06-10-2017 um 08:26 Uhr)

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    ergänze mal die Option
    Code:
    z buffer=sort,
    zur axis-Umgebung.

    VG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.02.2012
    Beiträge
    48
    Super! Damit funktioniert's!
    Danke!

    Aber noch eine Frage:

    Ich gebe die Bild-Größe an:
    width=20cm,
    height=20cm,

    Wenn ich eine 2D-Kurve ausgebe wird die Größe ganz genutzt (z. B. mit \addplot {x}
    Im 3D-Modus ist das Bild aber viel kleiner als angegeben.
    Gibt es dafür eine Erklärung?

    Gruß

    Manfred

  4. #4
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Zitat Zitat von msthab Beitrag anzeigen
    Ich gebe die Bild-Größe an:
    width=20cm,
    height=20cm,

    Wenn ich eine 2D-Kurve ausgebe wird die Größe ganz genutzt (z. B. mit \addplot {x}
    Im 3D-Modus ist das Bild aber viel kleiner als angegeben.
    Gibt es dafür eine Erklärung?
    Die x- (Breite) und y- (Höhe) Komponenten werden für die räumliche Darstellung z. T. in die Darstellungsebene gedreht -- und damit runterskaliert.
    Wenn Du testhalber mal
    Code:
    view={0}{90},
    bei den Optionen zur axis-Umgebung ergänzt, schaust Du quasi auf die Trichteröffnung, die dann auch entsprechend größer dargestellt wird.

    VG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  5. #5
    Registrierter Benutzer
    Registriert seit
    08.02.2012
    Beiträge
    48
    O.K.
    verstanden. Vielen Dank.

    Noch eine letzte Frage:
    Ich möchte die z-Achse erst ab 0 einzeichnen lassen.
    Der Befehl

    zmin=0,

    zerstört aber das ganze Bild, während der entsprechende Befehl für xmin und ymin prima funktioniert. Woran liegt das?

  6. #6
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Zitat Zitat von msthab Beitrag anzeigen
    Ich möchte die z-Achse erst ab 0 einzeichnen lassen.
    Der Befehl

    zmin=0,

    zerstört aber das ganze Bild, während der entsprechende Befehl für xmin und ymin prima funktioniert. Woran liegt das?
    Bildest Du bei Deiner Funktion z nicht als -1/x mit positiven Werten für x (0,2 bis 1,7) ab? Wie soll z da Null oder gar positiv werden?

    VG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  7. #7
    Registrierter Benutzer
    Registriert seit
    08.02.2012
    Beiträge
    48
    Das ist natürlich richtig. Ich habe nur negative z-Werte.
    Aber es müßte doch möglich sein, die Länge (Start- und Endpunkt) der z-Achse unabhängig von den tatsächlichen Werten festzulegen.
    Hintergrund:
    Was mich eigentlich stört ist, dass die z-Achse teilweise über dem Trichter liegt. Sie müßte eigentlich "im Trichter verschwinden", siehe Screenhot.

    Gruß

    ManfredPotentialtopf3.jpg
    Geändert von msthab (25-10-2017 um 08:38 Uhr)

  8. #8
    Registrierter Benutzer
    Registriert seit
    08.02.2012
    Beiträge
    48

    Lösung gefunden

    Ich habe eine "manuelle" Lösung gefunden.
    Ich verberge die z-Achse mit
    Code:
     hide z axis,
    und füge die Achse "manuell" als node ein
    Code:
    \draw [->] (axis cs: 0,0,-2.1)   -- (axis cs: 0,0,2)  node [above ] {$E_{\mathrm{pot}}$};
    Klappt prima, siehe jpg-Bild

    Gruß

    Manfred

    Potentialtopf4 mit z-Achse als node ausgeführt.jpg

    Hier noch einmal der ganze Code:
    Code:
    \begin{tikzpicture}
    \clip (2,2) rectangle (16,16);
    \begin{axis}[
    	width=20cm,
    	height=20cm,
            hide z axis,
    	xtick=\empty,
    	ytick=\empty,
    	ztick=\empty,
    	xlabel={$x$}, ylabel={$y$}, 
    	axis lines=center,
    	axis on top,
    	xmin=-1.8, xmax=2.3,
    	ymin=-1.8, ymax=2,
    	samples=40,
    	samples y=40,
    	domain=0.2:1.7,
    	y domain=0:360,
    	enlarge z limits={value=0.7,upper},
    	x label style={at={(ticklabel* cs:1.01)}, anchor=west, }, %Achsenbeschriftung aussen
    	y label style={at={(ticklabel* cs:1.01)}, anchor=west, }, %Achsenbeschriftung aussen
    	colormap/blackwhite,
    	z buffer=sort,
    	]
    \addplot3 [surf] ({x*cos(y)},{x*sin(y)},{-1/x});
    % Manuelle z-Achse, die im Trichter verschwindet
    \draw [->] (axis cs: 0,0,-2.1)   -- (axis cs: 0,0,2)  node [above ] {$E_{\mathrm{pot}}$};
    %
    \end{axis}
    \end{tikzpicture}
    Geändert von msthab (25-10-2017 um 08:44 Uhr)

  9. #9
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Zitat Zitat von msthab Beitrag anzeigen
    Was mich eigentlich stört ist, dass die z-Achse teilweise über dem Trichter liegt. Sie müßte eigentlich "im Trichter verschwinden", siehe Screenhot.
    Wieso?
    Du hast doch selbst
    Code:
    axis on top,
    angefordert...

    VG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  10. #10
    Registrierter Benutzer
    Registriert seit
    08.02.2012
    Beiträge
    48
    Ich musste das anfordern, da sonst die Achsen alle hinter dem Potentialtopf verschwinden (siehe Anhang). Die so erscheinende Achsenlage ist nach meiner Meinung ziemlich sinnlos, da der Koordinationursprung (0,0,0) in jedem Fall oberhalb des Potentialtops zu sehen sein muss.

    Viele Grüße

    Manfred
    Potentialtopf5.jpg

  11. #11
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Ah, da hab ich das wohl etwas verwurschtelt...

    VG
    Rainer
    There's nothing a good whack with a hammer won't fix!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •