11

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.)

2
  • Not sure what your placeholder c means? If you want a for loop in gnuplot try something like stackoverflow.com/questions/4062999/…. If you want to split the output depending on the xrange use the ternary operator t16web.lanl.gov/Kawano/gnuplot/misc1-e.html Commented Mar 9, 2011 at 19:06
  • 1
    I don't think that gnuplot thinks of c as a string. It rather parses the line and sees that 'c' is not a number and then breaks the interpretation, since this works: plot for [c=2:3] datafile using (f($1)):(g($2)) title sprintf("%d", c) Note that c is interpreted as an integer in the end. Commented Mar 11, 2011 at 10:15

5 Answers 5

17

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)
Sign up to request clarification or add additional context in comments.

1 Comment

This is the only answer that is consistent with the title of the question!
6

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

1 Comment

Coming back after a long time... and that's exactly what I wanted :). Thanks!
0
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.

Comments

0

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.

Comments

-1

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)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.