Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.graphics.apps.gnuplot > #3489 > unrolled thread

if else with lines

Started byJörg Buchholz <bookwood4new@freenet.de>
First post2016-11-28 20:27 +0100
Last post2016-11-29 07:31 +0100
Articles 3 — 2 participants

Back to article view | Back to comp.graphics.apps.gnuplot


Contents

  if else with lines Jörg Buchholz <bookwood4new@freenet.de> - 2016-11-28 20:27 +0100
    Re: if else with lines Karl Ratzsch <mail.kfr@gmx.net> - 2016-11-28 21:58 +0100
      Re: if else with lines Jörg Buchholz <bookwood4new@freenet.de> - 2016-11-29 07:31 +0100

#3489 — if else with lines

FromJörg Buchholz <bookwood4new@freenet.de>
Date2016-11-28 20:27 +0100
Subjectif else with lines
Message-ID<o1i0ci$t97$1@dont-email.me>
Hello

Sorry, I can't find the starting point for a solution to produce a plot
where the y value dependence from the line before and behind the current
line in a data set.

What I want to do is the following.

If y(n-1) < y(n) and y(n+1) < y(n) than y = y+a
If y(n-1) > y(n) and y(n+1) > y(n) than y = y-a
else y = y

Where n is the number of the line in a data set. "a" is a variable. The
y value is in a column of a data set.

And this in a plot command, so that the y value dependence from the y
value in the line before and after the current line in a data set.

Can somebody gives a kick-off to me? I think/hope that I really need
only a starting point for this problem.

Jörg

[toc] | [next] | [standalone]


#3490

FromKarl Ratzsch <mail.kfr@gmx.net>
Date2016-11-28 21:58 +0100
Message-ID<o1i5p2$isq$1@solani.org>
In reply to#3489
Am 28.11.2016 um 20:27 schrieb Jörg Buchholz:
> Hello
> 
> Sorry, I can't find the starting point for a solution to produce a plot
> where the y value dependence from the line before and behind the current
> line in a data set.
> 
> What I want to do is the following.
> 
> If y(n-1) < y(n) and y(n+1) < y(n) than y = y+a
> If y(n-1) > y(n) and y(n+1) > y(n) than y = y-a
> else y = y
> 
> Where n is the number of the line in a data set. "a" is a variable. The
> y value is in a column of a data set.
> 
> And this in a plot command, so that the y value dependence from the y
> value in the line before and after the current line in a data set.

You cannot read ahead of the current line, so you'll have to store
the last two values (resp. xy value pairs), and always only plot the
next-to-last one.

Key tool for this ghastly hack is the serial evaluation operator ",".

plot dataf us (lllx=llx,llx=lx,lx=$1,llly=lly,lly=ly,ly=$2, llx): \
  ((llly<lly && ly<lly) ? lly+a:(llly>lly)&&(ly>llyy) ? lly-a : lly)

Haven't tried now. You need to initialise all l* variables with NaN.
Honestly, I wouldn't go for gnuplot to do that. Use your favourite
spreadsheet calculator to transform the original dataset.

  Karl

[toc] | [prev] | [next] | [standalone]


#3491

FromJörg Buchholz <bookwood4new@freenet.de>
Date2016-11-29 07:31 +0100
Message-ID<o1j7a6$d6i$1@dont-email.me>
In reply to#3490
On 28.11.2016 21:58, Karl Ratzsch wrote:
> Am 28.11.2016 um 20:27 schrieb Jörg Buchholz:
>> Hello
>>
>> Sorry, I can't find the starting point for a solution to produce a plot
>> where the y value dependence from the line before and behind the current
>> line in a data set.
>>
>> What I want to do is the following.
>>
>> If y(n-1) < y(n) and y(n+1) < y(n) than y = y+a
>> If y(n-1) > y(n) and y(n+1) > y(n) than y = y-a
>> else y = y
>>
>> Where n is the number of the line in a data set. "a" is a variable. The
>> y value is in a column of a data set.
>>
>> And this in a plot command, so that the y value dependence from the y
>> value in the line before and after the current line in a data set.
> 
> You cannot read ahead of the current line, so you'll have to store
> the last two values (resp. xy value pairs), and always only plot the
> next-to-last one.
> 
> Key tool for this ghastly hack is the serial evaluation operator ",".
> 
> plot dataf us (lllx=llx,llx=lx,lx=$1,llly=lly,lly=ly,ly=$2, llx): \
>   ((llly<lly && ly<lly) ? lly+a:(llly>lly)&&(ly>llyy) ? lly-a : lly)
> 
> Haven't tried now. You need to initialise all l* variables with NaN.
> Honestly, I wouldn't go for gnuplot to do that. Use your favourite
> spreadsheet calculator to transform the original dataset.

Thanks, I have fear this. I always have the data before in a
spreadsheet, so I will do it there.

Jörg

[toc] | [prev] | [standalone]


Back to top | Article view | comp.graphics.apps.gnuplot


csiph-web