Mercurial > octave-nkf
annotate doc/interpreter/plotimages.m @ 20595:c1a6c31ac29a
eliminate more simple uses of error_state
* ov-classdef.cc: Eliminate simple uses of error_state.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 06 Oct 2015 00:20:02 -0400 |
parents | f248847b5071 |
children |
rev | line source |
---|---|
19731
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
17744
diff
changeset
|
1 ## Copyright (C) 2007-2015 John W. Eaton and David Bateman |
7018 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7 ## the Free Software Foundation; either version 3 of the License, or (at | |
8 ## your option) any later version. | |
9 ## | |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
16 ## along with Octave; see the file COPYING. If not, see | |
17 ## <http://www.gnu.org/licenses/>. | |
18 | |
20342
c3c1fb44f9b5
eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents:
19825
diff
changeset
|
19 function plotimages (d, nm, typ) |
20357
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
20 set_graphics_toolkit (); |
9088
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
21 set_print_size (); |
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
22 hide_output (); |
20351
d8992a16643c
doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents:
20350
diff
changeset
|
23 outfile = fullfile (d, [nm "." typ]); |
7257 | 24 if (strcmp (typ, "png")) |
25 set (0, "defaulttextfontname", "*"); | |
26 endif | |
9914
e76d8c767584
Switch to color output for PostScript documentation images
Rik <rdrider0-list@yahoo.com>
parents:
9912
diff
changeset
|
27 if (strcmp (typ, "eps")) |
e76d8c767584
Switch to color output for PostScript documentation images
Rik <rdrider0-list@yahoo.com>
parents:
9912
diff
changeset
|
28 d_typ = "-depsc2"; |
e76d8c767584
Switch to color output for PostScript documentation images
Rik <rdrider0-list@yahoo.com>
parents:
9912
diff
changeset
|
29 else |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
14138
diff
changeset
|
30 d_typ = ["-d", typ]; |
9914
e76d8c767584
Switch to color output for PostScript documentation images
Rik <rdrider0-list@yahoo.com>
parents:
9912
diff
changeset
|
31 endif |
9912
e9fe12c1b0c0
Set default papersize to the desired imagesize
Rik <rdrider0-list@yahoo.com>
parents:
9298
diff
changeset
|
32 |
20351
d8992a16643c
doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents:
20350
diff
changeset
|
33 if (strcmp (typ , "txt")) |
20350
b9d4ccf4291c
Use FLTK for creating plots for Manual.
Michael D. Godfrey <michaeldgodfrey@gmail.com>
parents:
20342
diff
changeset
|
34 image_as_txt (d, nm); |
7256 | 35 elseif (strcmp (nm, "plot")) |
6888 | 36 x = -10:0.1:10; |
37 plot (x, sin (x)); | |
17166
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
38 xlabel ("x"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
39 ylabel ("sin (x)"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
40 title ("Simple 2-D Plot"); |
20342
c3c1fb44f9b5
eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents:
19825
diff
changeset
|
41 print (outfile, d_typ); |
6888 | 42 elseif (strcmp (nm, "hist")) |
19825
b254a2e0859c
plotimages.m: Produce the same hist plot for documentation each time (bug #44263)
Rik <rik@octave.org>
parents:
19751
diff
changeset
|
43 randn ("state", 1); |
6888 | 44 hist (randn (10000, 1), 30); |
17166
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
45 xlabel ("Value"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
46 ylabel ("Count"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
47 title ("Histogram of 10,000 normally distributed random numbers"); |
20342
c3c1fb44f9b5
eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents:
19825
diff
changeset
|
48 print (outfile, d_typ); |
6888 | 49 elseif (strcmp (nm, "errorbar")) |
11033
d9c8916bb9dd
Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents:
9914
diff
changeset
|
50 rand ("state", 2); |
6888 | 51 x = 0:0.1:10; |
52 y = sin (x); | |
9298
20ee7f9cc904
Correct bugs in plot images produced for documentation
Rik <rdrider0-list@yahoo.com>
parents:
9245
diff
changeset
|
53 yl = 0.1 .* rand (size (x)); |
20ee7f9cc904
Correct bugs in plot images produced for documentation
Rik <rdrider0-list@yahoo.com>
parents:
9245
diff
changeset
|
54 yu = 0.1 .* rand (size (x)); |
20ee7f9cc904
Correct bugs in plot images produced for documentation
Rik <rdrider0-list@yahoo.com>
parents:
9245
diff
changeset
|
55 errorbar (x, sin (x), yl, yu); |
11033
d9c8916bb9dd
Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents:
9914
diff
changeset
|
56 axis ([0, 10, -1.1, 1.1]); |
17166
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
57 xlabel ("x"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
58 ylabel ("sin (x)"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
59 title ("Errorbar plot of sin (x)"); |
20342
c3c1fb44f9b5
eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents:
19825
diff
changeset
|
60 print (outfile, d_typ); |
6888 | 61 elseif (strcmp (nm, "polar")) |
62 polar (0:0.1:10*pi, 0:0.1:10*pi); | |
17166
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
63 title ("Example polar plot from 0 to 10*pi"); |
20342
c3c1fb44f9b5
eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents:
19825
diff
changeset
|
64 print (outfile, d_typ); |
6888 | 65 elseif (strcmp (nm, "mesh")) |
66 tx = ty = linspace (-8, 8, 41)'; | |
67 [xx, yy] = meshgrid (tx, ty); | |
68 r = sqrt (xx .^ 2 + yy .^ 2) + eps; | |
69 tz = sin (r) ./ r; | |
70 mesh (tx, ty, tz); | |
17166
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
71 xlabel ("tx"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
72 ylabel ("ty"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
73 zlabel ("tz"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
74 title ("3-D Sombrero plot"); |
20342
c3c1fb44f9b5
eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents:
19825
diff
changeset
|
75 print (outfile, d_typ); |
6888 | 76 elseif (strcmp (nm, "plot3")) |
77 t = 0:0.1:10*pi; | |
78 r = linspace (0, 1, numel (t)); | |
79 z = linspace (0, 1, numel (t)); | |
20351
d8992a16643c
doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents:
20350
diff
changeset
|
80 plot3 (r.*sin (t), r.*cos (t), z); |
17166
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
81 xlabel ("r.*sin (t)"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
82 ylabel ("r.*cos (t)"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
83 zlabel ("z"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
84 title ("plot3 display of 3-D helix"); |
20342
c3c1fb44f9b5
eliminate recursive make invocations in doc directory tree
John W. Eaton <jwe@octave.org>
parents:
19825
diff
changeset
|
85 print (outfile, d_typ); |
7189 | 86 elseif (strcmp (nm, "extended")) |
87 x = 0:0.01:3; | |
20350
b9d4ccf4291c
Use FLTK for creating plots for Manual.
Michael D. Godfrey <michaeldgodfrey@gmail.com>
parents:
20342
diff
changeset
|
88 plot (x, erf (x)); |
7189 | 89 hold on; |
20350
b9d4ccf4291c
Use FLTK for creating plots for Manual.
Michael D. Godfrey <michaeldgodfrey@gmail.com>
parents:
20342
diff
changeset
|
90 plot (x, x, "r"); |
17166
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
91 axis ([0, 3, 0, 1]); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
92 xlabel ("x"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
93 ylabel ("erf (x)"); |
0e34c475c956
plotimages.m: Add axis labels and titles to plots in Manual.
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
16994
diff
changeset
|
94 title ("erf (x) with text annotation"); |
20372
8e056730f27c
doc: Fix building of Manual plot 15.7 under gnuplot.
Rik <rik@octave.org>
parents:
20370
diff
changeset
|
95 if (strcmp (typ, "pdf") && ! strcmp (graphics_toolkit, "gnuplot")) |
8e056730f27c
doc: Fix building of Manual plot 15.7 under gnuplot.
Rik <rik@octave.org>
parents:
20370
diff
changeset
|
96 text (0.65, 0.6175, ['$\displaystyle\leftarrow x = {2\over\sqrt{\pi}}'... |
8e056730f27c
doc: Fix building of Manual plot 15.7 under gnuplot.
Rik <rik@octave.org>
parents:
20370
diff
changeset
|
97 '\int_{0}^{x}e^{-t^2} dt = 0.6175$']); |
20370
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
98 ## Be very careful about modifying this. pdflatex expects to be in |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
99 ## the same directory as the file it is operating on. |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
100 cd (make_absolute_filename (d)); |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
101 print ([nm ".pdf"], "-dpdflatexstandalone"); |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
102 [status, output] = system (["pdflatex " nm]); |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
103 if (status) |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
104 error ("plotimages: Failed to run pdflatex on <extended.pdf>"); |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
105 endif |
20350
b9d4ccf4291c
Use FLTK for creating plots for Manual.
Michael D. Godfrey <michaeldgodfrey@gmail.com>
parents:
20342
diff
changeset
|
106 delete ([nm ".aux"], [nm "-inc.pdf"], [nm ".log"], [nm ".tex"]); |
b9d4ccf4291c
Use FLTK for creating plots for Manual.
Michael D. Godfrey <michaeldgodfrey@gmail.com>
parents:
20342
diff
changeset
|
107 else |
20370
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
108 text (0.65, 0.6175, ['\leftarrow x = {2/\surd\pi {\fontsize{16}' ... |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
109 '\int_{\fontsize{8}0}^{\fontsize{8}x}} e^{-t^2} dt} = 0.6175']); |
20356
fc3056b9fac0
write figure to specified output directory
John W. Eaton <jwe@octave.org>
parents:
20351
diff
changeset
|
110 print (outfile, d_typ); |
20350
b9d4ccf4291c
Use FLTK for creating plots for Manual.
Michael D. Godfrey <michaeldgodfrey@gmail.com>
parents:
20342
diff
changeset
|
111 endif |
6888 | 112 else |
113 error ("unrecognized plot requested"); | |
114 endif | |
9088
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
115 hide_output (); |
6888 | 116 endfunction |
117 | |
20370
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
118 ## This function no longer sets the graphics toolkit; That is now done |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
119 ## automatically by C++ code which will ordinarily choose 'qt', but might |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
120 ## choose gnuplot on older systems. Only a complete lack of plotting is a |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
121 ## problem. |
20357
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
122 function set_graphics_toolkit () |
20370
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
123 if (isempty (available_graphics_toolkits ())) |
b439ccc9a162
doc: Improve building of images for the Manual.
Rik <rik@octave.org>
parents:
20357
diff
changeset
|
124 error ("no graphics toolkit available for plotting"); |
20357
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
125 endif |
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
126 endfunction |
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
127 |
9088
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
128 function set_print_size () |
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
129 image_size = [5.0, 3.5]; # in inches, 16:9 format |
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
130 border = 0; # For postscript use 50/72 |
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
131 set (0, "defaultfigurepapertype", "<custom>"); |
9912
e9fe12c1b0c0
Set default papersize to the desired imagesize
Rik <rdrider0-list@yahoo.com>
parents:
9298
diff
changeset
|
132 set (0, "defaultfigurepaperorientation", "landscape"); |
9088
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
133 set (0, "defaultfigurepapersize", image_size + 2*border); |
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
134 set (0, "defaultfigurepaperposition", [border, border, image_size]); |
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
135 endfunction |
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
136 |
20357
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
137 ## Use this function before plotting commands and after every call to print |
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
138 ## since print() resets output to stdout (unfortunately, gnuplot can't pop |
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
139 ## output as it can the terminal type). |
9088
77e71f3da3d6
Fix documentation image printing under new development code
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
140 function hide_output () |
20357
03c88436ad8c
Correctly generate figure 15.7 of the Manual.
Rik <rik@octave.org>
parents:
20356
diff
changeset
|
141 hf = figure (1, "visible", "off"); |
6888 | 142 endfunction |
7256 | 143 |
144 ## generate something for the texinfo @image command to process | |
20350
b9d4ccf4291c
Use FLTK for creating plots for Manual.
Michael D. Godfrey <michaeldgodfrey@gmail.com>
parents:
20342
diff
changeset
|
145 function image_as_txt (d, nm) |
20351
d8992a16643c
doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents:
20350
diff
changeset
|
146 fid = fopen (fullfile (d, [nm ".txt"]), "wt"); |
7256 | 147 fputs (fid, "\n"); |
148 fputs (fid, "+---------------------------------+\n"); | |
149 fputs (fid, "| Image unavailable in text mode. |\n"); | |
150 fputs (fid, "+---------------------------------+\n"); | |
151 fclose (fid); | |
152 endfunction | |
20351
d8992a16643c
doc: Clean up m-files which generate images for Manual.
Rik <rik@octave.org>
parents:
20350
diff
changeset
|
153 |