2014-08-29 12 views
5

Ich habe eine Daten-Datei, die wie folgt aussieht:3-Dimensional Plot in GnuPlot wo Farbe ist eine vierte Spalte in meiner Datendatei?

1 2 3 0.5 
2 8 9 0.2 
3 4 78 0.4 
6 5 7 0.01 
9 9 9 0.3 
10 12 18 0.9 
6 8 4 1 

Ich mag würde eine Grafik tun wie diese http://2.bp.blogspot.com/-378_rAaSSVU/UzU0gnGcr9I/AAAAAAAABnU/P1GwP9RKBkM/s1600/gnuplot.png Wo die vierte Spalte die Farbe ist.

Ich versuchte - offensichtlich falsch, da ich die vierte Spalte nicht verwenden, aber ich nicht alles, was in der Dokumentation zu finden:

set dgrid3d 30,30 
set view 60,45 
set hidden3d 
dataFile='prova.dat' 
set palette defined (0 "blue", 0.5 "white", 1 "pink") 
set pm3d 
splot dataFile u 1:2:3 with pm3d 

Sind Somethings wie das möglich?

Antwort

6

Mit nur pm3d können Sie eine vierte Spalte verwenden, um eine vom Z-Wert unabhängige Farbe auszuwählen. Zusammen mit dgrid3d ist dies nicht direkt möglich, da das Gridding in der Farbspalte nicht durchgeführt wird.

Sie können eine Problemumgehung verwenden: Zuerst plotten Sie den gerasterten Z-Wert in eine Datei, dann die gerasterten Farbwerte in eine zweite Datei und als letzten Punkt dgrid3d, fusionieren Sie die beiden temporären Dateien on-the-fly und plotten ihre Werte:

set dgrid3d 30,30 
dataFile='prova.dat' 

set table dataFile.'.grid' 
splot dataFile u 1:2:3 
unset table 

set table dataFile.'.color' 
splot dataFile u 1:2:4 
unset table 

set view 60,45 
set hidden3d 
set palette defined (0 "blue", 0.5 "white", 1 "pink") 
set autoscale cbfix 
set pm3d 
unset dgrid3d 
set ticslevel 0 
splot sprintf('< paste %s.grid %s.color', dataFile, dataFile) u 1:2:3:7 with pm3d notitle 

enter image description here

Hinweis, dass paste ein für Unix-ähnliche Betriebssysteme Kommandozeilen-Tool ist. Für eine ähnliche Lösung für Windows können Sie z. schreibe ein kleines Python-Skript paste.py (siehe meine Antwort auf Get ratio from 2 files in gnuplot für eine mögliche Implementierung). Dann müssen Sie die wgnuplot_pipes.exe binäre Datei ausführen und die splot Befehl wird

splot sprintf('< python paste.py %s.grid %s.color', dataFile, dataFile) u 1:2:3:7 with pm3d notitle 

Natürlich, denn das müssen Sie Python installiert und die Python binär muss über die PATH Umgebungsvariablen zur Verfügung stehen.

+0

Vielen Dank für die schnelle Antwort. Ich bin kein geschickter Benutzer daher verstehe ich nicht -running den Code mit Version 4.6 Patchlevel 5- die Warnungen generiert durch den Code: Zeile 19: Warnung: Unlesbare Datei überspringen "Paste prova.dat.grid prova.dat. Farbe " Zeile 19: Warnung: Keine verwendbaren Daten in diesem Plot, um den Achsenbereich automatisch zu skalieren. Splot sprintf ('Paste% s.grid% s.color', dataFile, dataFile) u 1: 2: 3: 7 mit pm3d notitle ^ "C: \ Benutzer \ Baroni \ Desktop \ prova.plt", Zeile 19: Alle Punkte x Wert undefined Ich habe Python und PATH installiert, ich habe ein Skript wie Sie verknüpft aber keinen Fortschritt – Naialeoque

+0

Sie müssen die verwenden letzter Befehl, den ich geschrieben habe, mit dem ' Christoph

+0

Ich verwendete Vergangenheit & Kopie, so nehme ich an, das Problem ist die Abwesenheit von Gnuplot.py in meinem env, ich versuche, dieses Problem zu lösen. – Naialeoque