2017-01-13 1 views
1

Ich habe ein einfachen Daten, die ich als 3D-Plots zeichnen möchte (3 Spalten durch ein Komma getrennt):Gnuplot 3D aus der Datei Plotten, nicht detailliert genug Werte auf x-, y- und z-Zecken

33.26,0.0000001,1 
67.02,0.0000010,2 
101.64,0.0000100,3 
137.53,0.0001000,4 
175.06,0.0010000,5 
214.59,0.0100000,6 
256.47,0.1000000,7 
301.09,1.0000000,8 
348.78,10.0000000,9 
399.92,100.0000000,10 
454.87,1000.0000000,11 
513.99,10000.0000000,12 
577.65,10000.0000000,13 
646.22,10000.0000000,14 
720.05,10000.0000000,15 
799.51,10000.0000000,16 
884.96,10000.0000000,17 
976.77,10000.0000000,18 
1075.29,10000.0000000,19 
1180.89,10000.0000000,20 
1293.92,10000.0000000,21 
1414.77,10000.0000000,22 
1431.83,10000.0000000,23 
1449.15,10000.0000000,24 
1466.97,10000.0000000,25 
1485.79,10000.0000000,26 
1505.97,10000.0000000,27 
1527.88,10000.0000000,28 
1551.87,10000.0000000,29 
1578.3,10000.0000000,30 
1607.56,10000.0000000,31 
1639.98,10000.0000000,32 
1675.95,10000.0000000,33 
1715.82,10000.0000000,34 
1759.96,10000.0000000,35 
1808.72,10000.0000000,36 
1862.49,10000.0000000,37 
1921.6,10000.0000000,38 
1986.44,10000.0000000,39 
2057.35,10000.0000000,40 
2134.71,10000.0000000,41 
2218.87,10000.0000000,42 
2310.2,10000.0000000,43 
2409.06,10000.0000000,44 
2515.83,10000.0000000,45 

ich schrieb ein einfaches Skript, das über Daten zu zeichnen:

#!/usr/bin/gnuplot 

set palette rgbformulae 33,13,10 
set datafile separator "," 

set terminal postscript eps size 10.5, 5.62 enhanced color font 'Helvetica,20' linewidth 2 
set output 'test.eps' 

set xlabel "time [s] (no operation)" offset -4, 0, 0 
set xtics left offset 0,-0.3 rotate by 45 right 
set xrange [0:400] 

set ylabel "ranges" offset 2, 0, 0 
set ytics left offset 0,-0.5 

set zlabel "devices" offset -4, 0, 0 
set zrange [0:50] 
set autoscale 

set title " " 
set key inside left top; 

set dgrid3d 30,30 
set hidden3d 

set style line 1 linecolor rgb '00FF00' linetype 4 linewidth 1 

splot "data.csv" u 1:2:3 title "" with lines palette 

Und meine Ausgabe:

enter image description here

Wie Sie alle sehen können, sind das Ausgabebild (oder, sollte ich sagen), die X-, Y- und Z-Ticks auf den Achsen x, y und z nicht detailliert genug. Es ist schwer zu sagen, dass das Ausgabebild mit diesen Daten gezeichnet wurde.

Gibt es eine Möglichkeit, die X-, Y- und Z-Ticks in einer eleganten Weise aus der Datei zu manipulieren?

Ich möchte auch das Bild mit neuen x, y und z Ticks besser lesbar sein, so denke ich, dass der 10000.0000000 Wert nur einmal angezeigt werden sollte, wenn es zum ersten Mal in Datendatei erschien.

Vielen Dank.

+0

Bitte beachten Sie, dass 'set autoscale' das' set xrange setzt [0: 400] ', ... Befehle. – maij

Antwort

1

Nicht gerade eine Antwort auf Ihre Frage, und es ist meine persönliche Meinung, aber Sie könnten in den Ideen interessieren:

  • Die Daten scheinen nicht Rasterdaten zu sein, so würde ich eine Oberfläche nicht verwenden Grundstück jeglicher Art.
  • Das Plotten nur der Datenpunkte in 3d ergibt kein brauchbares Bild, es ist nur eine einzelne Zeile irgendwo im Raum. Ich würde versuchen, ein 2D-Diagramm zu verwenden, das die Höheninformation als Farbe enthält.
  • Ich würde eine Logscale für die Y-Achse verwenden.

Dies führt zu folgendem Skript:

set terminal pngcairo 
set output 'test.png' 

set datafile separator "," 
set palette rgbformulae 33,13,10 

# Set margins to keep colorbox label inside the picture 
set lmargin screen 0.12 
set rmargin screen 0.85 

set xlabel "time [s] (no operation)" 
set ylabel "ranges" 
set cblabel "devices" 

unset key 

set yrange [1e-8:1e5] 
set ytics format "1e%+T" 
set logscale y 

set view map 
set cbrange [0:50] 
set zrange [0:50] 

splot "data.csv" u 1:2:3 w p pt 7 palette ,\ 
     "data.csv" every 5::4 u ($1+0):($2/3):(0):($3 != 30 ? 3 : "") with labels 

Er druckt auch die z-Etiketten einiger Datenpunkte, 30 aus Gründen Abstand zu überspringen.

Dies ist das Ergebnis:

enter image description here

Verwandte Themen