Sichtbares Spektrum mit gnuplot

8

Also ich habe diese Art von Daten

%Vor%

in einer Datei.

Wenn ich es plotte, sieht es so aus:

Jetzt möchte ich die Fläche unter der Kurve mit dem sichtbaren Spektrum füllen, wie folgt:

Ich habe bereits diesen Forenbeitrag gefunden, der zeichnet mir ein schönes sichtbares Spektrum, aber ich kann meine eigene Kurve nicht weiter hinzufügen, da dies ein pm3d-Plot zu sein scheint.

Was kann ich tun?

    
fsp 22.04.2014, 01:22
quelle

2 Antworten

6

Der Zeichensatz filledcurves kann diese Füllung nicht verarbeiten, aber Sie können Ihre Datendatei ändern, um sie mit pm3d und splot zu verwenden.

Der pm3d -Stil funktioniert nur für Oberflächen, daher müssen Sie Ihre Datendatei bearbeiten, um ein Oberflächenraster zu erhalten.

Dazu müssen Sie Ihrer Datei einen zweiten Datenblock hinzufügen, der die gleichen Werte in der ersten Spalte und das Minimum aller Werte der zweiten Spalte als zweite Spalte enthält. Beide Blöcke müssen durch eine Leerzeile getrennt sein.

Betrachten Sie die Beispieldatendatei spectrum.dat :

%Vor%

Von diesem müssen Sie eine Datei

erhalten %Vor%

Das kann mit awk on-the-fly gemacht werden (der Befehl wurde dank @TomFenech viel besser) und dann with pm3d mit den Funktionsdefinitionen aus dem Forum, das du verlinkt hast, geplottet:

%Vor%

Beachten Sie, dass Sie die pm3d-Palette nicht interpolieren müssen, wenn Sie genügend Datenpunkte haben. Das könnte dir in diesem Fall nur seltsame Artefakte (weiße vertikale Linien) geben.

    
Christoph 22.04.2014, 07:46
quelle
0

Ich treffe diese Frage regelmäßig, wenn ich das VIS-Spektrum darstellen möchte. Ich habe ein wenig über die Antwort von @Christoph ausgearbeitet und wollte den Farbteil einfacher machen. Was ist tatsächlich möglich, mit dem HSV-Raum statt RGB. Darüber hinaus ermöglicht es eine einfache Berechnung der Komplementärfarbe für Absorptionsspektren.

Der Farbtonwinkel gnuplot muss im Bereich 0: 1 liegen, in allen anderen Quellen 0-360. Der Winkel 0 entspricht Rot (angenommen 780 nm). Die ultraviolette Kante hat einen Farbton von 300 Grad.

Gnuplot skaliert automatisch die Eingabedaten in den Bereich, also müssen wir den cbrange Maximum tief in das UV setzen und den Magenta-Teil von Hue (bei 300 Grad = 0.83 gnuplot Hue) abschneiden. Schließlich ist der Farbton umgekehrt proportional zur Wellenlänge, so dass die Palettenfunktion (1-Grau) ist, die Sättigung und der Wert auf konstant 0,5 gesetzt sind %Vor%

Der Rest der Handlung ist identisch

    
ssavec 23.02.2018 11:57
quelle

Tags und Links