Mercurial > octave
changeset 26874:69722280102c
Calculate distance of axis limits on log scale for logarithmic axes (bug #55876).
* graphics.cc (axes::properties::check_axis_limits): For logarithmic axis scale,
calculate the distance between the limits in decades.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sun, 10 Mar 2019 18:25:25 +0100 |
parents | 9ec36417c262 |
children | ce972086bfd6 |
files | libinterp/corefcn/graphics.cc |
diffstat | 1 files changed, 11 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/graphics.cc Sun Mar 10 16:40:35 2019 +0100 +++ b/libinterp/corefcn/graphics.cc Sun Mar 10 18:25:25 2019 +0100 @@ -7640,18 +7640,17 @@ do_update = true; } // FIXME: maybe this test should also be relative? - else if (std::abs (limits(0) - limits(1)) < sqrt (eps)) - { - if (logscale) - { - limits(0) = (limits(0) < 0 ? 10.0 * limits(0) : 0.1 * limits(0)); - limits(1) = (limits(1) < 0 ? 0.1 * limits(1) : 10.0 * limits(1)); - } - else - { - limits(0) -= 0.1 * std::abs (limits(0)); - limits(1) += 0.1 * std::abs (limits(1)); - } + else if (! logscale && (std::abs (limits(0) - limits(1)) < sqrt (eps))) + { + limits(0) -= 0.1 * std::abs (limits(0)); + limits(1) += 0.1 * std::abs (limits(1)); + do_update = true; + } + else if (logscale + && (std::abs (std::log10 (limits(0) / limits(1))) < sqrt (eps))) + { + limits(0) = (limits(0) < 0 ? 10.0 * limits(0) : 0.1 * limits(0)); + limits(1) = (limits(1) < 0 ? 0.1 * limits(1) : 10.0 * limits(1)); do_update = true; }