Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Declaring two arrays in gnuplot and plotting them one with respect to another

Gnuplot version 5.2 supports arrays. As given here, one can declare 1D arrays and plot them

array A[100]
do for [i=1:100] { A[i] = sin(2*pi*i/100.) + 0.1*rand(0) }
plot A

This plots the matrix A with the index i.

Is there a way to have two 1D arrays (Eg: x and y) and plot them y vs x.

OR

Declare a 2D array A and plot the 2nd column of A with respect to the first column of A?

like image 481
ASarkar Avatar asked Sep 16 '25 02:09

ASarkar


1 Answers

Answer #2 If the two arrays A and B are guaranteed to have the same size, a simpler plot command is possible. We start by noting that all of the following plot commands are equivalent.

plot A
plot A using 1:2
plot A using (column(1)):(column(2))
plot A using ($1):($2)
plot A using ($1):(A[$1])

This is because for purposes of plotting an array A is treated as providing two columns of information, the index i (column 1) and the value A[i] (column 2). Following standard gnuplot syntax, each field in the "using" specifier of a plot command may contain either a bare column number or an expression in parentheses. Inside an expression the value of a column can be referred either by prefixing a $ sign or by using the function column(i).

With this in mind, it follows that the command below plots the values of array B against the values of array A.

plot A using (A[$1]):(B[$1])
like image 131
Ethan Avatar answered Sep 19 '25 07:09

Ethan