Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exchanging the axes in gnuplot

Tags:

gnuplot

I have been wondering about this for a while, and it might already be implemented in gnuplot but I haven't been able to find info online.

When you have a data file, it is possible to exchange the axes and assign the "dummy variable", say x, (in gnuplot's help terminology) to the vertical axis:

plot "data" u 1:2 # x goes to horizontal axis, standard
plot "data" u 2:1 # x goes to vertical axis, exchanged axes

However, when you have a function, you need to resort to a parametric function to do this. Imagine you want to plot x = y² (as opposite to y = x²), then (as far as I know) you need to do:

set parametric
plot t**2,t

enter image description here

which works nicely in this case. I think however that a more flexible approach would be desirable, something like

plot x**2 axes y1x1 # this doesn't work!

Is something like the above implemented, or is there an easy way to use y as dummy variable without the need to set parametric?

like image 967
Miguel Avatar asked Apr 02 '14 11:04

Miguel


People also ask

Does gnuplot support multiple Y axes on a single plot?

5.9 Does gnuplot support multiple y-axes on a single plot? Yes. 2D plots can have separate x axes at the bottom (x1) and top (x2), and separate y axes at the left (y1) and right (y2).

How use gnuplot command line?

Running gnuplot is easy: from a command prompt on any system, type gnuplot. It is even possible to do this over a telnet or ssh connection, and preview the graphs in text mode! For best results, however, you should run gnuplot from within X Window, so that you can see better previews of your plots.

How use gnuplot to plot data from a file?

To plot functions simply type: plot [function] at the gnuplot> prompt. Discrete data contained in a file can be displayed by specifying the name of the data file (enclosed in quotes) on the plot or splot command line. Data files should have the data arranged in columns of numbers.

How do I save a plot in gnuplot?

There are two ways to save your work in gnuplot: you can save the gnuplot commands used to generate a plot, so that you can regenerate the plot at a later time. Or you can export the graph to a file in a standard graphics file format, so that you can print it or include it in web pages, documents, or presentations.


2 Answers

So here is another ugly, but gnuplot-only variant: Use the special filename '+' to generate a dynamic data set for plotting:

plot '+' using ($1**2):1

The development version contains a new feature, which allows you to use dummy variables instead of column numbers for plotting with '+':

plot sample [y=-10:10] '+' using (y**2):(y)

I guess that's what come closest to your request.

like image 105
Christoph Avatar answered Oct 01 '22 03:10

Christoph


From what I have seen, parametric plots are pretty common in order to achieve your needs. If you really hate parametric plots and you have no fear for a VERY ugly solutions, I can give you my method...

My trick is to use a data file filled with a sequence of numbers. To fit your example, let's make a file sq with a sequence of reals from -10 to 10 :

seq -10 .5 10 > sq

And then you can do the magic you want using gnuplot :

plot 'sq' u ($1**2):($1)

And if you uses linux you can also put the command directly in the command line :

plot '< seq -10 .5 10' u ($1**2):($1)  

I want to add that I'm not proud of this solution and I'd love the "axis y1x1" functionality too.

like image 37
Pascail Avatar answered Oct 01 '22 02:10

Pascail