2017-08-24 4 views
1

Ich habe eine Datei, die Daten für die y-Achse sind in der dritten Spalte. Ich würde gerne die Skala von der ersten Spalte auf der x1 und von der zweiten Spalte auf der x2 gegeben haben. Der normale Weg wäre:gnuplot mit 2 x Achse von Datenpunkten

plot data u 1:2 axes x1y1, data u 1:3 x2y1 

Aber das schafft zwei Parzellen, die etwas, das ich vermeiden will. Natürlich könnte man mit Farben oder mit anderen schmutzigen Tricks arbeiten. Es macht den ganzen Handlungscode sehr umständlich. Ein weiterer guter Weg ist, multiplot wie vorgeschlagen here zu verwenden. Aber das ist nicht wirklich mein Ziel, denn ich möchte die echte x2-Achse haben. Ein anderer Weg, der mir in den Sinn kam, war x2range zu setzen, aber das heißt, zur Quelldatei zu gehen und min und max herauszufinden oder einige Statistiken in gnuplot zu verwenden (was sich für eine so einfache Sache wie eine Zeitverschwendung anfühlt). .

Gibt es einen einfacheren und eleganteren Weg als die oben genannten? (Ich bin besonders besorgt über die Lösung, um kurz zu schreiben, die Handlung kann aus mehreren (> 5) Datensätze bestehen und tun, und ich möchte vermeiden, jeden Datensatz zweimal zu plotten.

+2

Können Sie einige Daten und eine Illustration der Handlung, die Sie erreichen möchten, bereitstellen? Ich bin verwirrt von Ihrem Beispiel "Plot" -Befehl - es bezieht sich nie auf die zweite Spalte der x2-Achse. Warum willst du nicht zwei Plots? Wenn Sie nur nach einer statischen, datenunabhängigen Beziehung zwischen der x- und der x2-Achse suchen, können Sie [set link] (https://stackoverflow.com/a/26737333/7932936) verwenden. – user8153

Antwort

0

Dies kann auf diese Weise durchgeführt werden, indem gnuplot erzählen Werte erneut Scandatei mit der 2. Säule als x2 aber nur ungültige y-Werte für dieses zweite Grundstück:

set xtics nomirror 
set xrange [:] noextend 
set x2tics 
set x2range [:] noextend 
plot '/tmp/f.gdat' u 1:3 w l, '' u 2:(1/0) ax x2y1 

als Beispiel können Sie diese Daten mit Celsius auf x und Fahrenheit auf x2 Grundstück:

0  32  0 
30  86  1 
60  140  2 
90  194  3 

Beachten Sie, dass dies nur sinnvoll ist, wenn Spalte 2 affin ist Wenn Sie die affine Beziehung kennen, ist die Verwendung von set link viel besser.

Verwandte Themen