changeset 14271:e2a14d1b4eaa

rgbplot.m: Add new Matlab compatible function for plotting colormaps * NEWS: Add section for 3.8 release and list of new functions. * image.txi: Add rgbplot to documentation. * scripts/image/module.mk: Add rgbplot to build system. * rgbplot.m: Added new function.
author Rik <octave@nomad.inbox5.com>
date Fri, 27 Jan 2012 19:09:02 -0800
parents 527ed2a51d54
children 4f8d2931f886
files NEWS doc/interpreter/image.txi scripts/image/module.mk scripts/image/rgbplot.m
diffstat 4 files changed, 90 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/NEWS	Fri Jan 27 13:23:30 2012 -0500
+++ b/NEWS	Fri Jan 27 19:09:02 2012 -0800
@@ -1,3 +1,27 @@
+Summary of important user-visible changes for version 3.8:
+---------------------------------------------------------
+
+ ** Other new functions added in 3.8.0:
+
+      rgbplot
+
+ ** Deprecated functions.
+
+    The following functions were deprecated in Octave 3.4 and have been
+    removed from Octave 3.8.
+                                           
+      autocor    dispatch              is_global   saveimage 
+      autocov    fstat                 krylovb     strerror  
+      betai      gammai                perror      strerror  
+      cellidx    glpkmex               perror      values    
+      cquad      is_duplicate_entry    replot                      
+      
+    The following functions have been deprecated in Octave 3.8 and will
+    be removed from Octave 3.12 (or whatever version is the second major
+    release after 3.8):
+
+
+
 Summary of important user-visible changes for version 3.6:
 ---------------------------------------------------------
 
--- a/doc/interpreter/image.txi	Fri Jan 27 13:23:30 2012 -0500
+++ b/doc/interpreter/image.txi	Fri Jan 27 19:09:02 2012 -0800
@@ -127,6 +127,8 @@
 
 @DOCSTRING(colormap)
 
+@DOCSTRING(rgbplot)
+
 @DOCSTRING(autumn)
 
 @DOCSTRING(bone)
@@ -166,9 +168,9 @@
 An additional colormap is @code{gmap40}.  This code map contains only
 colors with integer values of the red, green and blue components.  This
 is a workaround for a limitation of gnuplot 4.0, that does not allow the color
-of line or patch objects to be set, and so @code{gmap40} is useful for gnuplot
-4.0 users, and in particular in conjunction with the @var{bar},
-@var{barh} or @var{contour} functions.
+of line or patch objects to be set.  @code{gmap40} is chiefly useful to gnuplot
+4.0 users, and particularly in conjunction with the @var{bar}, @var{surf},
+and @var{contour} functions.
 
 @DOCSTRING(gmap40)
 
--- a/scripts/image/module.mk	Fri Jan 27 13:23:30 2012 -0500
+++ b/scripts/image/module.mk	Fri Jan 27 19:09:02 2012 -0800
@@ -32,6 +32,7 @@
   image/rgb2hsv.m \
   image/rgb2ind.m \
   image/rgb2ntsc.m \
+  image/rgbplot.m \
   image/spinmap.m \
   image/spring.m \
   image/summer.m \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/image/rgbplot.m	Fri Jan 27 19:09:02 2012 -0800
@@ -0,0 +1,60 @@
+## Copyright (C) 2012 Rik Wehbring
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {} rgbplot (@var{cmap})
+## Plot the components of a colormap.
+##
+## The first column is plotted in red, the second column in green, and
+## the third column in blue.  The values are between 0 and 1 and represent
+## the intensity of the RGB components in the given indexed color.
+## @seealso{colormap}
+## @end deftypefn
+
+function rgbplot (cmap)
+
+  if (nargin != 1)
+    print_usage ();
+  endif
+
+  if (! ismatrix (cmap) || ndims (cmap) != 2 || columns (cmap) != 3)
+    error ("rgbplot: CMAP must be a matrix of size Nx3");
+  elseif (any (cmap(:) < 0) || any (cmap(:) > 1))
+    error ("rgbplot: CMAP intensities must be in the range [0, 1]");
+  endif
+
+  plot (cmap(:,1),"r", cmap(:,2),"g", cmap(:,3),"b");
+  set (gca, 'ytick', 0:0.1:1);
+  xlabel ("color index");
+
+endfunction
+
+
+%!demo
+%! clf;
+%! rgbplot (ocean);
+
+%%test input validation
+%!error rgbplot ()
+%!error rgbplot (1,2)
+%!error <CMAP must be a matrix of size Nx3> rgbplot ({0 1 0})
+%!error <CMAP must be a matrix of size Nx3> rgbplot (ones (3,3,3))
+%!error <CMAP must be a matrix of size Nx3> rgbplot (ones (3,4))
+%!error <CMAP intensities must be in the range> rgbplot ([0 0 -2])
+%!error <CMAP intensities must be in the range> rgbplot ([0 0 2])
+