#360 create a "set decimalsign" variant for each file in a plot

open
nobody
None
5
2013-04-02
2013-04-02
Kraus
No

Please add a datafile-modifier to the plot and fit commands (and to other commands which can read files) which can set the decimalsign used for input numbers on a per file base.
e.g.: plot 'datawithcommas.data' decimalsign ',' using 1:2, 'numberswithpoints.data' decimalsign '.' using 1:2

I get data form two different sources (devices), one uses commas as decimalsign, the other uses a dot for that purpose. I'd like to plot both in one plot. Currently I can't do that as I only can choose "set decimalsign locale 'German_Germany.1252'" on a global scope.
For scripting purposes it would be nice to not touch the data files. The current workaround is to change one of the two file types by "search and replace" into the other one.

Running GNUPLOT
Version 4.6 patchlevel 0 last modified 2012-03-04
Build System: MS-Windows 32 bit
on Win7, 64bit

Discussion

  • Ethan Merritt
    Ethan Merritt
    2013-04-02

    There is a misunderstanding here. The "set decimalsign" command does not affect how files are read. It only affects how gnuplot itself formats numbers when creating labels for axis ticks or other plot elements. The interpretation of numerical input is left entirely to the C language library routines atof() and scanf(). These are affected by the current LOCALE settings, but not by "set decimalsign".

     
  • Kraus
    Kraus
    2013-04-02

    That's correct and I am aware of this.
    Let me rephrase:

    Can a datafile-modifier be introduced that allows to set different locale values for each file used in one plot?
    e.g.: plot 'datawithcommas.data' locale 'German_Germany.1252' using 1:2, 'datawithdots.data' locale 'English_United States.1252' using 1:2

    I want to plot 2 sets of data into the same plot. They come from different sources, one uses the comma as decimal sign (locale German_Germany.1252) and the other uses dots as decimal sign (locale English_United States.1252).

    Or: Is there a way to run "set decimalsign locale 'English_United States.1252'" in the middle of a plot command?

     
  • Maybe it is an option for you to filter one dataset before plotting it:

    plot 'datawithcommas.data', '< tr . , < datawithdots.data'

    or

    plot '< tr , . < datawithcommas.data', 'datawithdots.data'

    Christoph

     
  • Kraus
    Kraus
    2013-04-02

    Thank you,
    using this Unix command line magic is an acceptable workaround:
    After getting tr for windows from the CoreUtils for Windows http://gnuwin32.sourceforge.net/packages/coreutils.htm
    and switching to the console version of gnuplot

    plot "datawithdots.data" using 1:2 axes x1y1, "< tr ',' '.' < datawithcommas.data" using 1:2 axes x1y2

    gave me the plot I was looking for.
    Though a gnuplot internal solution would be highly appreciated.