comparison scripts/plot/private/__go_draw_axes__.m @ 13209:9eff72139c05

Use "-10^{%T}" format for negative values in log scale plots. * scripts/plot/private/__go_draw_axes__.m: Remove extraneous debug code, Use "-10^{%T}" for log scale plots with negative limits / values.
author Ben Abbott <bpabbott@mac.com>
date Sat, 24 Sep 2011 15:39:19 -0400
parents 9b8e786bbf3c
children 434e227b100b
comparison
equal deleted inserted replaced
13208:0257eb36e15a 13209:9eff72139c05
336 ylogscale = strcmpi (axis_obj.yscale, "log"); 336 ylogscale = strcmpi (axis_obj.yscale, "log");
337 zlogscale = strcmpi (axis_obj.zscale, "log"); 337 zlogscale = strcmpi (axis_obj.zscale, "log");
338 338
339 ## Detect logscale and negative lims 339 ## Detect logscale and negative lims
340 if (xlogscale && all (axis_obj.xlim < 0)) 340 if (xlogscale && all (axis_obj.xlim < 0))
341 xsgn = -1; 341 axis_obj.xsgn = -1;
342 if (strcmp (axis_obj.xdir, "reverse")) 342 if (strcmp (axis_obj.xdir, "reverse"))
343 axis_obj.xdir = "normal"; 343 axis_obj.xdir = "normal";
344 else 344 else
345 axis_obj.xdir = "reverse"; 345 axis_obj.xdir = "reverse";
346 endif 346 endif
347 axis_obj.xtick = -flip (axis_obj.xtick); 347 axis_obj.xtick = -flip (axis_obj.xtick);
348 axis_obj.xticklabel = flip (axis_obj.xticklabel); 348 axis_obj.xticklabel = flip (axis_obj.xticklabel);
349 axis_obj.xticklabelmode = "manual";
350 axis_obj.xlim = -flip (axis_obj.xlim); 349 axis_obj.xlim = -flip (axis_obj.xlim);
351 else 350 else
352 xsgn = 1; 351 axis_obj.xsgn = 1;
353 endif 352 endif
354 if (ylogscale && all (axis_obj.ylim < 0)) 353 if (ylogscale && all (axis_obj.ylim < 0))
355 ysgn = -1; 354 axis_obj.ysgn = -1;
356 if (strcmp (axis_obj.ydir, "reverse")) 355 if (strcmp (axis_obj.ydir, "reverse"))
357 axis_obj.ydir = "normal"; 356 axis_obj.ydir = "normal";
358 else 357 else
359 axis_obj.ydir = "reverse"; 358 axis_obj.ydir = "reverse";
360 endif 359 endif
361 axis_obj.ytick = -flip (axis_obj.ytick); 360 axis_obj.ytick = -flip (axis_obj.ytick);
362 axis_obj.yticklabel = flip (axis_obj.yticklabel); 361 axis_obj.yticklabel = flip (axis_obj.yticklabel);
363 axis_obj.yticklabelmode = "manual";
364 axis_obj.ylim = -flip (axis_obj.ylim); 362 axis_obj.ylim = -flip (axis_obj.ylim);
365 else 363 else
366 ysgn = 1; 364 axis_obj.ysgn = 1;
367 endif 365 endif
368 if (zlogscale && all (axis_obj.zlim < 0)) 366 if (zlogscale && all (axis_obj.zlim < 0))
369 zsgn = -1; 367 axis_obj.zsgn = -1;
370 if (strcmp (axis_obj.zdir, "reverse")) 368 if (strcmp (axis_obj.zdir, "reverse"))
371 axis_obj.zdir = "normal"; 369 axis_obj.zdir = "normal";
372 else 370 else
373 axis_obj.zdir = "reverse"; 371 axis_obj.zdir = "reverse";
374 endif 372 endif
375 axis_obj.ztick = -flip (axis_obj.ztick); 373 axis_obj.ztick = -flip (axis_obj.ztick);
376 axis_obj.zticklabel = flip (axis_obj.zticklabel); 374 axis_obj.zticklabel = flip (axis_obj.zticklabel);
377 axis_obj.zticklabelmode = "manual";
378 axis_obj.zlim = -flip (axis_obj.zlim); 375 axis_obj.zlim = -flip (axis_obj.zlim);
379 else 376 else
380 zsgn = 1; 377 axis_obj.zsgn = 1;
381 endif
382
383 if (ylogscale && false)
384 disp ('yscale is "log"')
385 ylim = axis_obj.ylim
386 ytick = axis_obj.ytick
387 yticklabel = axis_obj.yticklabel
388 yticklabelmode = axis_obj.yticklabelmode
389 endif 378 endif
390 379
391 xlim = axis_obj.xlim; 380 xlim = axis_obj.xlim;
392 ylim = axis_obj.ylim; 381 ylim = axis_obj.ylim;
393 zlim = axis_obj.zlim; 382 zlim = axis_obj.zlim;
460 if (strcmpi (obj.visible, "off")) 449 if (strcmpi (obj.visible, "off"))
461 continue; 450 continue;
462 endif 451 endif
463 452
464 if (xlogscale && isfield (obj, "xdata")) 453 if (xlogscale && isfield (obj, "xdata"))
465 obj.xdata = xsgn * obj.xdata; 454 obj.xdata = axis_obj.xsgn * obj.xdata;
466 obj.xdata(obj.xdata<=0) = NaN; 455 obj.xdata(obj.xdata<=0) = NaN;
467 endif 456 endif
468 if (ylogscale && isfield (obj, "ydata")) 457 if (ylogscale && isfield (obj, "ydata"))
469 obj.ydata = ysgn * obj.ydata; 458 obj.ydata = axis_obj.ysgn * obj.ydata;
470 obj.ydata(obj.ydata<=0) = NaN; 459 obj.ydata(obj.ydata<=0) = NaN;
471 endif 460 endif
472 if (zlogscale && isfield (obj, "zdata")) 461 if (zlogscale && isfield (obj, "zdata"))
473 obj.zdata = zsgn * obj.zdata; 462 obj.zdata = axis_obj.zsgn * obj.zdata;
474 obj.zdata(obj.zdata<=0) = NaN; 463 obj.zdata(obj.zdata<=0) = NaN;
475 endif 464 endif
476 465
477 ## Check for facecolor interpolation for surfaces. 466 ## Check for facecolor interpolation for surfaces.
478 doing_interp_color = ... 467 doing_interp_color = ...
1989 1978
1990 if (strcmpi (obj.xaxislocation, "top")) 1979 if (strcmpi (obj.xaxislocation, "top"))
1991 do_tics_1 (obj.xtickmode, obj.xtick, obj.xminortick, obj.xticklabelmode, 1980 do_tics_1 (obj.xtickmode, obj.xtick, obj.xminortick, obj.xticklabelmode,
1992 obj.xticklabel, obj.xcolor, "x2", plot_stream, true, mono, 1981 obj.xticklabel, obj.xcolor, "x2", plot_stream, true, mono,
1993 "border", obj.tickdir, ticklength, fontname, fontspec, 1982 "border", obj.tickdir, ticklength, fontname, fontspec,
1994 obj.interpreter, obj.xscale, gnuplot_term); 1983 obj.interpreter, obj.xscale, obj.xsgn, gnuplot_term);
1995 do_tics_1 ("manual", [], "off", obj.xticklabelmode, obj.xticklabel, 1984 do_tics_1 ("manual", [], "off", obj.xticklabelmode, obj.xticklabel,
1996 obj.xcolor, "x", plot_stream, true, mono, "border", 1985 obj.xcolor, "x", plot_stream, true, mono, "border",
1997 "", "", fontname, fontspec, obj.interpreter, obj.xscale, 1986 "", "", fontname, fontspec, obj.interpreter, obj.xscale,
1998 gnuplot_term); 1987 obj.xsgn, gnuplot_term);
1999 elseif (strcmpi (obj.xaxislocation, "zero")) 1988 elseif (strcmpi (obj.xaxislocation, "zero"))
2000 do_tics_1 (obj.xtickmode, obj.xtick, obj.xminortick, obj.xticklabelmode, 1989 do_tics_1 (obj.xtickmode, obj.xtick, obj.xminortick, obj.xticklabelmode,
2001 obj.xticklabel, obj.xcolor, "x", plot_stream, true, mono, 1990 obj.xticklabel, obj.xcolor, "x", plot_stream, true, mono,
2002 "axis", obj.tickdir, ticklength, fontname, fontspec, 1991 "axis", obj.tickdir, ticklength, fontname, fontspec,
2003 obj.interpreter, obj.xscale, gnuplot_term); 1992 obj.interpreter, obj.xscale, obj.xsgn, gnuplot_term);
2004 do_tics_1 ("manual", [], "off", obj.xticklabelmode, obj.xticklabel, 1993 do_tics_1 ("manual", [], "off", obj.xticklabelmode, obj.xticklabel,
2005 obj.xcolor, "x2", plot_stream, true, mono, "axis", 1994 obj.xcolor, "x2", plot_stream, true, mono, "axis",
2006 "", "", fontname, fontspec, obj.interpreter, obj.xscale, 1995 "", "", fontname, fontspec, obj.interpreter, obj.xscale,
2007 gnuplot_term); 1996 obj.xsgn, gnuplot_term);
2008 else 1997 else
2009 do_tics_1 (obj.xtickmode, obj.xtick, obj.xminortick, obj.xticklabelmode, 1998 do_tics_1 (obj.xtickmode, obj.xtick, obj.xminortick, obj.xticklabelmode,
2010 obj.xticklabel, obj.xcolor, "x", plot_stream, true, mono, 1999 obj.xticklabel, obj.xcolor, "x", plot_stream, true, mono,
2011 "border", obj.tickdir, ticklength, fontname, fontspec, 2000 "border", obj.tickdir, ticklength, fontname, fontspec,
2012 obj.interpreter, obj.xscale, gnuplot_term); 2001 obj.interpreter, obj.xscale, obj.xsgn, gnuplot_term);
2013 do_tics_1 ("manual", [], "off", obj.xticklabelmode, obj.xticklabel, 2002 do_tics_1 ("manual", [], "off", obj.xticklabelmode, obj.xticklabel,
2014 obj.xcolor, "x2", plot_stream, true, mono, "border", 2003 obj.xcolor, "x2", plot_stream, true, mono, "border",
2015 "", "", fontname, fontspec, obj.interpreter, obj.xscale, 2004 "", "", fontname, fontspec, obj.interpreter, obj.xscale,
2016 gnuplot_term); 2005 obj.xsgn, gnuplot_term);
2017 endif 2006 endif
2018 if (strcmpi (obj.yaxislocation, "right")) 2007 if (strcmpi (obj.yaxislocation, "right"))
2019 do_tics_1 (obj.ytickmode, obj.ytick, obj.yminortick, obj.yticklabelmode, 2008 do_tics_1 (obj.ytickmode, obj.ytick, obj.yminortick, obj.yticklabelmode,
2020 obj.yticklabel, obj.ycolor, "y2", plot_stream, ymirror, mono, 2009 obj.yticklabel, obj.ycolor, "y2", plot_stream, ymirror, mono,
2021 "border", obj.tickdir, ticklength, fontname, fontspec, 2010 "border", obj.tickdir, ticklength, fontname, fontspec,
2022 obj.interpreter, obj.yscale, gnuplot_term); 2011 obj.interpreter, obj.yscale, obj.ysgn, gnuplot_term);
2023 do_tics_1 ("manual", [], "off", obj.yticklabelmode, obj.yticklabel, 2012 do_tics_1 ("manual", [], "off", obj.yticklabelmode, obj.yticklabel,
2024 obj.ycolor, "y", plot_stream, ymirror, mono, "border", 2013 obj.ycolor, "y", plot_stream, ymirror, mono, "border",
2025 "", "", fontname, fontspec, obj.interpreter, obj.yscale, 2014 "", "", fontname, fontspec, obj.interpreter, obj.yscale,
2026 gnuplot_term); 2015 obj.ysgn, gnuplot_term);
2027 elseif (strcmpi (obj.yaxislocation, "zero")) 2016 elseif (strcmpi (obj.yaxislocation, "zero"))
2028 do_tics_1 (obj.ytickmode, obj.ytick, obj.yminortick, obj.yticklabelmode, 2017 do_tics_1 (obj.ytickmode, obj.ytick, obj.yminortick, obj.yticklabelmode,
2029 obj.yticklabel, obj.ycolor, "y", plot_stream, ymirror, mono, 2018 obj.yticklabel, obj.ycolor, "y", plot_stream, ymirror, mono,
2030 "axis", obj.tickdir, ticklength, fontname, fontspec, 2019 "axis", obj.tickdir, ticklength, fontname, fontspec,
2031 obj.interpreter, obj.yscale, gnuplot_term); 2020 obj.interpreter, obj.yscale, obj.ysgn, gnuplot_term);
2032 do_tics_1 ("manual", [], "off", obj.yticklabelmode, obj.yticklabel, 2021 do_tics_1 ("manual", [], "off", obj.yticklabelmode, obj.yticklabel,
2033 obj.ycolor, "y2", plot_stream, ymirror, mono, "axis", 2022 obj.ycolor, "y2", plot_stream, ymirror, mono, "axis",
2034 "", "", fontname, fontspec, obj.interpreter, obj.yscale, 2023 "", "", fontname, fontspec, obj.interpreter, obj.yscale,
2035 gnuplot_term); 2024 obj.ysgn, gnuplot_term);
2036 else 2025 else
2037 do_tics_1 (obj.ytickmode, obj.ytick, obj.yminortick, obj.yticklabelmode, 2026 do_tics_1 (obj.ytickmode, obj.ytick, obj.yminortick, obj.yticklabelmode,
2038 obj.yticklabel, obj.ycolor, "y", plot_stream, ymirror, mono, 2027 obj.yticklabel, obj.ycolor, "y", plot_stream, ymirror, mono,
2039 "border", obj.tickdir, ticklength, fontname, fontspec, 2028 "border", obj.tickdir, ticklength, fontname, fontspec,
2040 obj.interpreter, obj.yscale, gnuplot_term); 2029 obj.interpreter, obj.yscale, obj.ysgn, gnuplot_term);
2041 do_tics_1 ("manual", [], "off", obj.yticklabelmode, obj.yticklabel, 2030 do_tics_1 ("manual", [], "off", obj.yticklabelmode, obj.yticklabel,
2042 obj.ycolor, "y2", plot_stream, ymirror, mono, "border", 2031 obj.ycolor, "y2", plot_stream, ymirror, mono, "border",
2043 "", "", fontname, fontspec, obj.interpreter, obj.yscale, 2032 "", "", fontname, fontspec, obj.interpreter, obj.yscale,
2044 gnuplot_term); 2033 obj.ysgn, gnuplot_term);
2045 endif 2034 endif
2046 do_tics_1 (obj.ztickmode, obj.ztick, obj.zminortick, obj.zticklabelmode, 2035 do_tics_1 (obj.ztickmode, obj.ztick, obj.zminortick, obj.zticklabelmode,
2047 obj.zticklabel, obj.zcolor, "z", plot_stream, true, mono, 2036 obj.zticklabel, obj.zcolor, "z", plot_stream, true, mono,
2048 "border", obj.tickdir, ticklength, fontname, fontspec, 2037 "border", obj.tickdir, ticklength, fontname, fontspec,
2049 obj.interpreter, obj.zscale, gnuplot_term); 2038 obj.interpreter, obj.zscale, obj.zsgn, gnuplot_term);
2050 endfunction 2039 endfunction
2051 2040
2052 function do_tics_1 (ticmode, tics, mtics, labelmode, labels, color, ax, 2041 function do_tics_1 (ticmode, tics, mtics, labelmode, labels, color, ax,
2053 plot_stream, mirror, mono, axispos, tickdir, ticklength, 2042 plot_stream, mirror, mono, axispos, tickdir, ticklength,
2054 fontname, fontspec, interpreter, scale, gnuplot_term) 2043 fontname, fontspec, interpreter, scale, sgn, gnuplot_term)
2055 persistent warned_latex = false; 2044 persistent warned_latex = false;
2056 if (strcmpi (interpreter, "tex")) 2045 if (strcmpi (interpreter, "tex"))
2057 for n = 1 : numel(labels) 2046 for n = 1 : numel(labels)
2058 labels{n} = __tex2enhanced__ (labels{n}, fontname, false, false); 2047 labels{n} = __tex2enhanced__ (labels{n}, fontname, false, false);
2059 endfor 2048 endfor
2067 num_mtics = 10; 2056 num_mtics = 10;
2068 if (any (strcmp (gnuplot_term, {"tikz", "pstex", "pslatex", "epslatex"}))) 2057 if (any (strcmp (gnuplot_term, {"tikz", "pstex", "pslatex", "epslatex"})))
2069 fmt = "$10^{%T}$"; 2058 fmt = "$10^{%T}$";
2070 else 2059 else
2071 fmt = "10^{%T}"; 2060 fmt = "10^{%T}";
2061 endif
2062 if (sgn < 0)
2063 fmt = strcat ("-", fmt);
2072 endif 2064 endif
2073 else 2065 else
2074 fmt = "%g"; 2066 fmt = "%g";
2075 num_mtics = 5; 2067 num_mtics = 5;
2076 endif 2068 endif