From: Jonathan L. <jl...@fr...> - 2005-07-01 15:18:51
|
I have gone through the code for axis.c in the gnuplot sources. Below= is some pseudo code containing the pieces of code that I think are relev= ant to what I am trying to do and also my understanding of what they do. Again I am using a C program to calculate the position of xtics. Then when i generate a "set xtics" command that will contain all the tic values I want along with labels ( which is going to be minutes:second= s). The maximum range of what I want to graph will be 1 hour, but realistically it will be about 500 seconds.=20 I dont understand how the tic interval is calculated in the funtion= =20 quantize_normal_tics. Could someone explain to me using pseduo code e= tc how it works ? Also the function quantize_duodecimal_tics rounds the tic interval. I= t is called from the quantize_time_tics function when the format of the axis is time. It seems to be similar to the quantize_normal_tics function. I would appreciate any responses Jonathan ---------------------------------------------------------------------= ------ void setup_tics(axis, max) { =09//part that im interested in =09 =09//TIC_COMPUTED =3D default; gnuplot figures them =09} else if (ticdef->type =3D=3D TIC_COMPUTED) { =09=09 ticstep[axis] =3D tic =3D make_tics(axis, max); =09} } static double make_tics(axis, guide) { =09range =3D absolute(max - min) =09 =09//i presume tic refers to the tic interval =09//calculate the tic interval =09tic =3D quantize_normal_tics(range, guide); =09//I want to use time data =09//this rounds the tic interval to a nice figure =09quantize_time_tics(axis, tic, range, guide); } //calculate the tic interval - dont understand the logic behind this double=09quantize_normal_tics(range, guide) { =09floor ( base 10 log of the range) =09. =09. =09. =09. =09 =09//seems complicated } //round tic interval to a nice value static double quantize_time_tics(axis, tic, xr, guide) { =09//i will be graphing data whose range will be 1 hour maximum =09//realistically the range will be about 500 seconds =09//60 * 60 =3D 3600 sec =09 timelevel[axis] =3D TIMELEVEL_SECONDS; =09 if (tic > 5) { =09 /* turn tic into units of minutes */ =09 tic =3D quantize_duodecimal_tics(xr / 60.0, guide12) * 60; =09 if (tic >=3D 60) =09 timelevel[axis] =3D TIMELEVEL_MINUTES; =09 } } //again dont understand the logic behind this - it seems to me that i= t uses some of the logic from the quantize_normal_tics function static double=09quantize_duodecimal_tics(arg, guide) { =09//seems complicated } /* make smalltics for time-axis */ //i presume these are the minor tics.=20 //not exactly sure what order this function is called static double make_auto_time_minitics(tlevel, incr) { =09//part that seems relevant to me case TIMELEVEL_SECONDS: case TIMELEVEL_MINUTES: if (incr >=3D 5) tinc =3D 1; if (incr >=3D 10) tinc =3D 5; if (incr >=3D 20) tinc =3D 10; if (incr >=3D 60) tinc =3D 20; if (incr >=3D 2 * 60) tinc =3D 60; if (incr >=3D 6 * 60) tinc =3D 2 * 60; if (incr >=3D 12 * 60) tinc =3D 3 * 60; if (incr >=3D 24 * 60) tinc =3D 6 * 60; break; } On Thu, 2005-06-30 at 21:35 +0200, Hans-Bernhard Br=C3=B6ker wrote: > Jonathan Lynch wrote: >=20 > > There are potentially ten data points in the space of a second. I= f i > > express time in the format 16:19:25.941980 the graph is inaccurat= e > > because gnuplot does not support fractions of a second due to usi= ng the > > tm structure. >=20 > It'll only be inaccurate if a second is still wider than one pixel = on=20 > the actual output format. Whether that's the case depends on the o= utput=20 > format, and the length of the interval you have measurements for. >=20 > > So Im going to stick to plotting the floating point data. Gnuplot > > generates tics on the x-axis and labels them. What is the algorit= hm > > where gnuplot calculates where the tics should be? >=20 > It's complicated. The general scheme is: "divide the range into > intervals of 'nice' length, such that there are between 5 and 10 of= them" >=20 > > I could write a C program to parse through the data file and gene= rate a > > file with gnuplot commands. if i knew exactly where the tics were= going > > to be I could put some tics manually eg. > > set xtics ("16:19:25",58765.0, 16:19:30",58770.0) and so on. >=20 > Why do you think you have to know the tick placement for that? Thi= s=20 > command will override the automatically placed tick positions, so i= t=20 > doesn't matter where they would have gone. >=20 >=20 >=20 > ------------------------------------------------------- > SF.Net email is sponsored by: Discover Easy Linux Migration Strateg= ies > from IBM. Find simple to follow Roadmaps, straightforward articles, > informative Webcasts and more! Get everything you need to get up to > speed, fast. http://ads.osdn.com/?ad_id=3D7477&alloc_id=3D16492&op= =3Dclick > _______________________________________________ > Gnuplot-info mailing list > Gnu...@li... > https://lists.sourceforge.net/lists/listinfo/gnuplot-info |