Gnuplot unter Unix: Oberfläche ist zu dominant und verdeckt alles

Mitti

New member
Themenstarter
Registriert
9 Juli 2010
Beiträge
221
Huhu,

für mein Softwareentwicklungspraktikum müssen wir unser Ergebnis mit z.B. gnuplot visualisieren (Wir können auch andere Programme nutzen, aber gnuplot wurde uns "empfohlen").

Wir haben es geschafft mit "set pm3d at s hidden3d 100" unsere Funktionsoberfläche zu überdecken, nur, wie man sieht: Werden die Pfeile und die Skala auch überdeckt.
Die Pfeile liegen an sich über der Oberfläche, nur ist die Oberfläche so dominant, dass sie alles überdeckt, wenn man den Graph dementsprechend dreht. Und das sollte nicht so sein. Wir möchten die Pfeile gerne sichtbar über der Oberfläche haben.

Hat jemand einen Rat bzw. eine Idee, wie man dies ändern könnte?
Sollten noch Fragen kommen, immer her damit! Meine gnuplot Kenntnisse sind nicht groß, aber ich hoffe, das ist so verständlich ..!?

Hier das Skript:

set xrange [-20:20]
set yrange [-20:20]
set zrange [0:12]

set view 20,60,2.0,1.0 # Blickwinkel
set xtics 5 # Schritte an der x-Achse
set ytics 5 # Schritte an der y-Achse
set ztics 5 # Schritte an der z-Achse
set isosamples 60 # Feinheit des Gitternetzes

r_zero=8 # Paramter der Funktion
A_one=7
A_two=1.5
h_one=2
h_two=3

f(x,y) = (A_one*exp(-sqrt(x**2+y**2)**2/h_one**2) + A_two*exp(-((sqrt(x**2+y**2)-r_zero)**2/(h_two**2))))

set arrow from 5,5,5 to 8,8,8
set arrow from 1,2,3 to 8,8,8

set pm3d at s hidden3d 100
set style line 100 lt 5 lw 0.5


splot f(x,y)
unset hidden3d; unset surf


Es handelt sich um die Version 4.4.3. Sollte die neuste sein.
Merci :)
Mitti
 

Anhänge

  • drei.jpg
    drei.jpg
    105,2 KB · Aufrufe: 46
Zuletzt bearbeitet:
Was meinst du wieviele Hellseher sich hier rumtreiben?
Ich wette deine Chance auf eine helfende Antwort steigt enorm wenn du das verwendete gnuplotscript zusätzlich zu dem Bildchen hochlädst.
Und auch die verwendete gnuplot Version ist nicht uninteressant.
 
Sorry das ich jetzt mich einmisch:

-sqrt(x**2+y**2)**2

ergibt doch keinen Sinn oder? Da kannste doch gleich -(x**2+y**2) schreiben?

oder es fehlt ne Klammer ;)

beim zweiten vorkommen

((sqrt(x**2+y**2)-r_zero)**2

haste es auch anders^^

Zum Problem: an hidden3d liegts aber nicht?

Edit3: Also bei mir unter Ubuntu 10.10 mit der gnuplot version aus den repos funzt es problemlos.

Führe ich gnuplot -persist test.plt (euer Skript) aus, siehts so aus:

Drehe ich die Ansicht etwas dann sieht es so aus:
 
Zuletzt bearbeitet:
Hey,
ja, das ist uns inzwischen auch aufgefallen. Das lang nur da dran, dass wir da vorher r² stehen hatten als 2d Funktion, und wir das mit sqrt(x²+y²) ersetzt haben um die Funktion 3d zu bekommen. Also fehlt da auch keine Klammer ;) Und kannst dich gerne einmischen, wir wissen ja, dass unser Code lange nicht perfekt ist.

Bei dir wird der Farbskalenbalken rechts nicht überdeckt. Immerhin etwas, aber die Pfeile weiterhin. Sieht man auf dem zweitem Bild?
Auf einem etwas langsamerem Rechner sieht man, dass die Pfeile geplottet werden, aber dann von der Oberflächen überschrieben werden.

So weit wir das wissen, liegt es nicht an hidden3d. Aber da können wir uns auch irren, unsere Kenntnisse sind gering ... Aber ohne hidden3d sieht es grausam aus, da wir dann die ganzen Linien etc. überlagert haben.
 
Ich kenn mich mit Gnuplot auch nicht wahnsinnig gut aus, ich musste mich im Studium schon damit "quälen" und mach sowas heute lieber mit Maple/Mathlab.

Also der Pfeil wird auch überdeckt ja, übrigens ist die Ubuntu Version gnuplot 4.4 patchlevel 0.

Mehr weiß ich dazu leider gerade auch nicht ;)

(ich hab übrigens nicht mal geschafft, eine png ausgabe hinzubekommen damit, trotz mehreren Versuchen. Keine Ahnung wieso das nich ging. - es lief immer auf ein schwarzes png file hinaus.)
 
:D Wie gerne wir Matlab nutzen würden... Aber das wurde uns für das Projekt untersagt. Vor allem schmiert der Laptop fast ab wenn ich den Plot feiner mache bei gnuplot, bei Matlab hingegen springt der Lüfter kaum an -.-
Jetzt ist es halt ein blaues Gitternetz mir roten Pfeilen, aber schön ist das nicht. Auch nicht immer einfach zu sehen.

Zur Ausgabe in eine Datei sollte es so gehen:
set output 'bild.png'
set terminal postscript color solid
replot


Wenn du nur ein schwarzes Bild bekommst, kann es sein, dass das "replot" vergessen wurde?
 
Wir haben es gelöst,
der Code sieht jetzt (Beispielweise) so aus:

set xrange [-16:16]
set yrange [-16:16]
set zrange [-2:7]
set hidden3d
set xtics 3.2 # Schritte an der x-Achse
set ytics 3.2
set ztics 3.2
set isosamples 120
r_zero=8 # Parameter der Funktion
A_one=7
A_two=1.5
h_one=2
h_two=3
f(x,y) = A_one*exp(-sqrt(x**2+y**2)**2/h_one**2) + A_two*exp(-((sqrt(x**2+y**2)-r_zero)**2/(h_two**2)))
set terminal postscript color solid
set output 'plot.png'
set multiplot
set arrow 1 from 5,4,4 to 5.54949,4.43959,1.37278
set arrow 2 from 4.80902,4.58779,4 to 5.2427,5.00152,1.40814
set pm3d explicit
splot f(x,y) with pm3d
splot 'kreisdata' w lines linetype 9
unset multiplot
set output
replot


Für den Fall, dass jemand das Problem auch mal haben sollte ;)
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben