Mercurial > hg > octave-lyh
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 |