Mercurial > octave
changeset 22568:6b2a1b2c1576 stable
__gnuplot_draw_axes__.m: Handle case where clim range is 0.
* __gnuplot_draw_axes__.m (mapcdata): If clim range (clim(2) - clim(1)) is
zero, then all cdata takes on the maximum possible value.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 30 Sep 2016 17:17:35 -0700 |
parents | d5e775944809 |
children | d3adf6999939 |
files | scripts/plot/util/private/__gnuplot_draw_axes__.m |
diffstat | 1 files changed, 15 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/plot/util/private/__gnuplot_draw_axes__.m Fri Sep 30 14:32:37 2016 -0500 +++ b/scripts/plot/util/private/__gnuplot_draw_axes__.m Fri Sep 30 17:17:35 2016 -0700 @@ -2855,18 +2855,29 @@ function retval = mapcdata (cdata, mode, clim, cmap_sz) if (ndims (cdata) == 3) ## True Color, clamp data to 8-bit + clim = double (clim); cdata = double (cdata); - cdata = 255 * (cdata - clim(1)) / (clim(2)-clim(1)); - cdata(cdata < 0) = 0; cdata(cdata > 255) = 255; + clim_rng = clim(2) - clim(1); + if (clim_rng != 0) + cdata = 255 * (cdata - clim(1)) / clim_rng; + cdata(cdata < 0) = 0; cdata(cdata > 255) = 255; + else + cdata(:) = 255; + endif ## Scale using inverse of gnuplot's cbrange mapping retval = 1 + cdata * (cmap_sz-1)/255; else if (islogical (cdata)) cdata += 1; elseif (strcmp (mode, "scaled")) + clim = double (clim); cdata = double (cdata); - clim = double (clim); - cdata = 1 + fix (cmap_sz * (cdata - clim(1)) / (clim(2) - clim(1))); + clim_rng = clim(2) - clim(1); + if (clim_rng != 0) + cdata = 1 + fix (cmap_sz * (cdata - clim(1)) / clim_rng); + else + cdata(:) = cmap_sz; + endif else if (isinteger (cdata)) cdata += 1;