From: Richard L. <la...@un...> - 2013-12-10 03:46:02
|
Michael: Neither of those suggestions seemed to work. However, in the float_array function in utils.py, simply changing "return numpy.asarray(m, numpy.float32)" to "return numpy.asarray(m, numpy.float64)" did the trick for me. I have another question, but I'll ask it in a separate e-mail. -- Richard ----------------------------------------------------------------------------- | Richard B. Langley E-mail: la...@un... | | Geodetic Research Laboratory Web: http://gge.unb.ca | | Dept. of Geodesy and Geomatics Engineering Phone: +1 506 453-5142 | | University of New Brunswick Fax: +1 506 453-4943 | | Fredericton, N.B., Canada E3B 5A3 | | Fredericton? Where's that? See: http://www.fredericton.ca/ | ----------------------------------------------------------------------------- ________________________________________ From: Michael Haggerty [mh...@al...] Sent: Monday, December 09, 2013 11:09 AM To: Richard Langley Cc: gnu...@li... Subject: Re: [Gnuplot-py-users] Resolution of Plots 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/ |