On Nov 22, 2010, at 16:01 , Mojca Miklavec wrote:
[...]
2) Negative axis labels are set with hyphen instead of proper minus sign, which should be longer (see example above).
I'm not sure if this should really be fixed automatically or not. In order to fix this one would have to patch gnuplot core.
I forgot the details how to do it (I can find it out), but you can configure the layout of labels. In particular you may enclose the number into math delimiters ($). Maybe something like set format y "$%.1f$" would work (you might want to change the size of left margin then).
Hej Mojca, thank you for your answer! Well, that was surprisingly easy - I should have checked the manual first (I was just about to write an ugly hack into your context terminal driver :). Actually set format "$%g$" gives the default label format (only enclosed in $) for all axes.
Doing any other kind of magic would be a bit dangerous. Keep in mind that plot 'x.dat' u 1:(2*$2) will also fail since TeX will interpret $ as math delimiter. But changing that behaviour would have other undesirable effects.
3) First I thought luatex hangs but then I noticed TikZ is awfully slow when drawing plots with large amounts of data points (the tikzpicture had about 3000 lines). I can speed this up by reducing the size by invoking plot with:
plot "< gawk '(NR-1)%10 == 0 {print $0}' fileWithLotsOfData" using [...]
I wonder if there is a smarter way to do this in gnuplot.
[...] What I did for my "theory of chaos" reports and the million-of-points plots in my thesis was to create an empty plot with ConTeXt terminal, create a borderless plot with PNG and then manually insert PNG into the generated ConTeXt output, which you could do with TikZ output as well. It requires more effort, but there is no other way to speed up vector graphics. They are simply not suitable for drawing millions of points on the same plot.
I'd probably do the same in that case. But unlike you I have a lot less points - 5000 points instead of millions. Loot at this example, which is the slightly modified random demo script taken from the gnuplot page: set terminal context size 15.0cm,10.5cm standalone set output 'randomCtx.tex' set dummy t,y unset key set parametric set samples 5000, 5000 set style function dots set title "Lattice test for random numbers" set xlabel "rand(n) ->" set xrange [ 0.00000 : 1.00000 ] noreverse nowriteback set ylabel "rand(n + 1) ->" set yrange [ 0.00000 : 1.00000 ] noreverse nowriteback set zlabel "rand(n + 2) ->" set zrange [ 0.00000 : 1.00000 ] noreverse nowriteback plot rand(0), rand(0) set terminal lua tikz context size 15.0cm,10.5cm fulldoc set output 'randomLua.tex' replot Now look at the timing of processing the output files with context (final run only): context randomCtx.tex -> 3.150 seconds. context randomLua.tex -> 23.658 seconds. Further increasing the number of points to 15000 results in 8.978 vs. 62.878 seconds. Quite a big difference in processing time!
(Gnuplot also has a keyword 'every' to reduce the number of points, but in my case I wanted to plot all of them.)
True, but suppose you don't have evenly spaced data points. Then you don't want every other line but one point every 5 kilometres or something the like. Especially for line drawings it would be beneficial not to place every single point. Instead consecutive points should be skipped if they are close to each other (with regard to plot units) - it makes no sense to include points which you won't see anyway. This could be done by defining a grid with a certain (user defined) resolution and rounding the coordinates (plot units) of a line point to the nearest grid node. All consecutive line points falling on the same grid node should not be passed on to terminal drivers. The psxy utility of GMT (http://gmt.soest.hawaii.edu/) does this for instance. I am not aware of such a functionality within gnuplot but it would be a nice feature. Best wishes, Florian