When dealing with data we often need to compare different sets/series between themselves. For this we need to plot several y-axes function of the same, common x-axis. Scilab is very versatile at plotting multiple y-axes on the same graphical window.

This tutorial will teach you how to plot 2 or more y-axis plot in the same graphical window using Scilab.

In this example we are going to plot 3 function *y _{1}(x)*,

*y*and

_{2}(2)*y*function of

_{3}(x)*x*, overlapping the curves, each with its own y-axis. The functions are defined as:

y_{1}(x) &= \sin(x)\\

y_{2}(x) &= e^{\frac{x}{6}}\cdot \left [y_{1}(x)+2 \right ]\\

y_{3}(x) &= 1+x^{2}

\end{split} \]

**Step 1**. Define the x-axis and the functions.

// Preparing data clear() clf() x=linspace(1,30,200); y1=sin(x); y2=exp(x/6).*(y1+2); y3=1+x.^2;

Before defining the data we are erasing all the variables in the Scilab Variable Browser with the function `clear()`

. Also, in order to make sure that we don’t miss any warning or error message, we are clearing the Scilab console with the function `clf()`

. The x-axis contains `200`

points, between `1`

and `30`

, and is defined with the function `linspace()`

. After the x-axis definition, the *y* functions are defined: `y1`

, `y2`

and `y3`

. After running these Scilab instructions, an empty graphical window should be generated and the `x`

and `y1`

, `y2`

and `y3`

variables should appear in the Scilab Variable Browser.

**Step 2**. Plot the function *y _{1}(x)*.

// Axis y1 c=color("slategray"); plot2d(x,y1,style=c) h1=gca(); h1.font_color=c; h1.children(1).children(1).thickness = 2; xlabel("$x$","FontSize",3) ylabel("$y_{1}(x)=\sin(x)$","FontSize",3) title("x-engineer.org","color","blue")

First we create a colour variable `c`

, which we are going to use as a setting for the axes and polyline (function curve). The function *y _{1}(x)* is plotted with the instruction

`plot2d()`

. With `gca()`

we read the current axes parameters and we assign them to the variable `h1`

for editing. Next instructions are setting the colour of the axis font and the thickness of the line. After, we use `xlabel()`

and `ylabel()`

to set the axes labels and `title()`

for a title. Note that we used **Latex**notations for the y-axis. For more information on Scilab plots and Latex please read the article How to add Latex formatted text in a Scilab plot.

After running the Scilab instructions in a script file (`*.sce`

) or in the Scilab Console, we get the following graphical window.

**Step 3**. Plot the function *y _{2}(x)*.

// Axis y2 c=color("red"); h2=newaxes(); h2.font_color=c; plot2d(x,y2,style=c) h2.filled="off"; h2.axes_visible(1)="off"; h2.y_location="right"; h2.children(1).children(1).thickness=2; ylabel("$y_{2}(x)=e^{\frac{x}{6}}\cdot \left [y_{1}(x)+2 \right ]$","FontSize",3,"color",c)

For the second y axis we are going to use the color `red`

for font and polyline. Also, using the axes handle variable `h2`

, we are locating it on the `right`

side of the plot. We also make the background transparent (`off`

) to allow the previous y-axis to be visible and hide the x-axis (`off`

) to avoid overlapping with the previous one.

After running the Scilab instructions in a script file (`*.sce`

) or in the Scilab Console, we get the following graphical window.

**Step 4**. Plot the function *y _{3}(x)*.

// Axis y3 c=color("purple"); h3=newaxes(); h3.font_color=c; plot2d(x,y3,style=c) h3.children(1).children(1).thickness=2; h3.filled="off"; h3.axes_visible(1)="off"; h3.axes_reverse(2)="on"; h3.y_location="middle"; h3.log_flags="nln"; ylabel("$y_{3}(x)=1+x^{2}$","FontSize",3,"color",c)

For the third y-axis we use the colour `purple`

. We set it up in the same way as second y axis, with a few exceptions. The axis position will be in the `middle`

of the plot, the values will be reversed (`on`

), minimum at the top and maximum at the bottom, and the scale (numbers) will be displayed as logarithmic (`nln`

).

After running the Scilab instructions in a script file (`*.sce`

) or in the Scilab Console, we get the following graphical window.

To get the final plot in one go, copy all the Scilab instructions defined in the steps above in a single Scilab script file (*.sce) and run it.

Scilab is very versatile for multiple y-axes plots. To get a handle of it, you can try another example with different functions and different settings.