From: Michael H. <mh...@al...> - 2013-12-09 15:09:44
|
On 12/09/2013 03:40 PM, Richard B. Langley wrote: > On Monday, December 9, 2013,343, at 3:47 AM, Michael Haggerty wrote: >> On 12/08/2013 02:49 PM, Richard Langley wrote: >>> I have a file of x,y real data pairs with the values to 9 digits of >>> precision. When I use gnuplot to plot the data directly using, say: >>> plot 'HHAT3260.csv' using 2:1 >>> I get a detailed plot with the values at their original precision. >>> However, when I use gnuplot within Python (having read in the file to >>> float lists x and y) using: >>> g = Gnuplot.Gnuplot(debug=1) >>> d = Gnuplot.Data(x, y, with_='points') >>> g.plot(d) >>> I get a plot with plotted values rounded or truncated to 7 digits of >>> precision, it seems. Is there a way to preserve the precision of the >>> data when using py-gnuplot? >> >> Gnuplot.py's default is to treat data as 32-bit floating point numbers. >> But if you explicitly pass double-precision data to Gnuplot.Data(), >> then I think it will pass the data to gnuplot with the higher precision. >> I.e., do something like >> >> d = Gnuplot.Data( >> numpy.array(x, dtype=numpy.float64), >> numpy.array(y, dtype=numpy.float64), >> with_='points', >> ) > Thanks, Michael, but, sadly, that did not work. > -- Richard Hmm, sorry, I thought I had built something like that in. If so, it would have been more then 10 years ago, so I hope you will forgive me :-) The formatting is done by the function write_array() in the file utils.py. The individual elements are formatted using '%s'. If you change that to '%r' (in two places) or '%.20g' or something like that, I think you'll get what you want. Or, of course, you can always write the data to a file yourself, similar to how PlotItems.Data() does it. Michael -- Michael Haggerty mh...@al... http://softwareswirl.blogspot.com/ |