Mahdiyar
Mahdiyar

Reputation: 335

How do I convert an integer to a string in gnuplot?

I know how to use $ with using in examples like

plot datafile using f($1):g($2)

to plot functions of column data. But I want to use this feature in a loop:

plot for [c=1:10] datafile using f($(c)):g($(c+1))

Of course this code doesn't work. I guess that if I know how to convert the integer c to a string (or a single ASCII character) then it would work. How can I do it?

(If the same task can be done without conversion of integer to string, that would be fine too.)

Upvotes: 11

Views: 17659

Answers (5)

David Ongaro
David Ongaro

Reputation: 3937

Prepend an empty string if necessary. E.g.:

gnuplot> a=42
gnuplot> print a." questions"
         internal error : STRING operator applied to non-STRING type

gnuplot> print "".a." questions"
42 questions

The first print fails because of a type mismatch. The second one works fine though. Apparently . is left associative.

Upvotes: -1

user3648948
user3648948

Reputation: 141

set title sprintf("Polinômio de Taylor no ponto %f ",a)

or the English variant

set title sprintf("Taylor Polynomial at the point %f ",a)

will define the title transforming the number a into the previous string I have use this in a loop, with the Taylor Polynomial calculated previously at the point a, where a containing a number is the governing variable of the while.

Upvotes: 0

Sergei
Sergei

Reputation: 1789

You can Use intrinsic function sprintf to convert numbers to string

gnuplot>  a=3; b=6;
gnuplot>  plot a*x+b title sprintf("a=%1.2f; b=%1.2f",a,b)

Upvotes: 17

Arun
Arun

Reputation: 481

Are you looking for something like:

plot for [c=1:5] datafile using (column(c)):(column(c+1))

This will do: plot datafile u 1:2, "" u 2:3, "" u 3:4, "" u 4:5, "" u 5:6

Upvotes: 6

Sunhwan Jo
Sunhwan Jo

Reputation: 2311

How about something like this? The loop statement could be different depending on the shell you are using. The one below is using bash.

plot '< for i in 1 2 3 4 ; do echo $i ; done' us ($1):($1+1)

Upvotes: -1

Related Questions