Exchanging the axes in gnuplot

后端 未结 3 1552
陌清茗
陌清茗 2021-01-12 03:06

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

相关标签:
3条回答
  • 2021-01-12 03:34

    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.

    0 讨论(0)
  • 2021-01-12 03:39

    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.

    0 讨论(0)
  • 2021-01-12 03:54

    As far as I know there is no way to simply invert or exchange the axes in gnuplot when plotting a function.

    The reason comes from the way functions are plotted in the normal plotting mode. There is a set of points at even intervals along the x axis which are sampled (frequency set by set samples) and the function value computed. This only allows for well-behaved functions; one y-value per x-value.

    0 讨论(0)
提交回复
热议问题