2017-08-13 2 views
0

je le fichier de données suivantes:En Gnuplot, comment puis-je tracer la somme de deux colonnes quand je suis tracé par nom d'en-tête

denst densu densd denss 
3  1  1  1 
4  1  1.5 1.5 
5  1  2.5 1.5 

Je peux tracer, par exemple, densu (denst) comme:

plot 'file.txt' u 'denst':'densu'

Ce qui est une syntaxe très pratique. Mais si je veux tracer, dire la somme des densu et densd, en ce qui concerne denst la seule façon que je peux le faire est:

set key autotitle columnhead à dire gnuplot la première ligne est en-têtes et pas des données

plot 'file.txt' u 1:($2+$3) pour tracer

La question est comment puis-je faire des opérations avec des valeurs de colonne comme ça, mais en utilisant la notation de nom? Le fichier réel est un csv avec ~ 40 colonnes, et il est très fastidieux de compter manuellement quelle colonne est quel numéro afin que je puisse utiliser la syntaxe $n pour faire des calculs avec des données de colonne.

Je voudrais faire quelque chose comme plot 'file.txt' u 1:($'densu'+$'densd'), en utilisant la syntaxe de nom d'en-tête de manière analogue à la façon dont je peux le faire avec la syntaxe de numéro de colonne. Est-ce qu'il y a un moyen de faire ça?

Répondre

3

J'ai découvert un moyen de le faire. Ces deux commandes sont équivalentes:

plot 'file.txt' u 1:($2+$3) 
plot 'file.txt' u 1:(column(2)+column(3)) 

Vous ne pouvez pas faire

plot 'file.txt' u 'denst':($'densu'+$'densd') 

mais vous pouvez faire

plot 'file.txt' u 'denst':(column('densu')+column('densd')) 

dans le même sens.