From graphics-request at octave dot org Mon Sep 26 16:21:44 2005 Subject: Multicolor mesh plot patch From: Quentin Spencer To: bug at octave dot org, graphics@octave.org Date: Mon, 26 Sep 2005 16:17:44 -0500 This is a multi-part message in MIME format. --------------000707010504090306020109 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit I'm not sure which list is best for this, so I'm sending it to bug and graphics. Someone recently was complaining about the quality of mesh plots, and I agree the two-color plots don't look that great. I discovered that this can be changed quite easily using gnuplot 4.0 features. The attached patch makes mesh use color lines. It also defines a color palette that is very similar to Matlab's default palette. I don't know if this is the best way to do this, I'm open to suggestions on how to improve it. One thing that's missing is a check for whether the "palette" line type is valid. The octave-forge functions surf and surfc use a global gnuplot_has_pm3d, but it's a bit of a hack and I doubt John wants stuff like this in core Octave code. Is there any way to verify the capabilities of gnuplot from octave? We have things like OCTAVE_VERSION and OCTAVE_FORGE_VERSION defined, would it make sense to define GNUPLOT_VERSION? -Quentin --------------000707010504090306020109 Content-Type: text/plain; name="patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch" Index: mesh.m =================================================================== RCS file: /cvs/octave/scripts/plot/mesh.m,v retrieving revision 1.31 diff -u -r1.31 mesh.m --- a/mesh.m 15 Jun 2005 03:49:23 -0000 1.31 +++ b/mesh.m 26 Sep 2005 20:54:59 -0000 at @ -75,7 +75,10 @@ __gnuplot_raw__ ("set nologscale;\n"); __gnuplot_set__ parametric; __gnuplot_raw__ ("set view 60, 30, 1, 1;\n"); - __gnuplot_splot__ (zz); + __gnuplot_set__ palette defined ( 0 "dark-blue", 1 "blue", ... + 2 "cyan", 3 "yellow", 4 "red" , 5 "dark-red" ) + __gnuplot_set__ nocolorbox + __gnuplot_splot__ zz with line palette; __gnuplot_set__ noparametric; else msg = "mesh: rows (z) must be the same as length (y) and"; --------------000707010504090306020109--