dd4f9cf0c1ef0daa0d42c87b09dd9e20dfe252cd
[scilab.git] / scilab / modules / graphics / tests / unit_tests / colorbar.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2018 - 2019 - Samuel GOUGEON
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- INTERACTIVE TEST -->
9 // <-- TEST WITH GRAPHIC -->
10 // <-- NO CHECK REF -->
11
12 // unitary tests of colorbar()
13 // =============================================================================
14
15 // ORGANIZATION of TESTS
16 // * Open figures 0 and 10
17 // * Dock them somewhere in the desk in order to make them always visible
18 // * Execute each block of lines and see results and comments
19
20 // CHECKING COLORS SPLITTING AND TICKING + SKIPPED ARGUMENTS
21 // =========================================================
22
23 // 1) Matplot
24 //    =======
25 // 1.0) Matplot: implicit minU, maxU, colminmax = [umin umax]
26 scf(0);
27 clf reset
28 Matplot([1 2 3;4 5 7]);
29 colorbar   // [1 7] graduations covered by colors #[1 7].
30            // Ticks on middles of colored blocks
31
32 // 1.1) Matplot: colminmax = [umin umax] accordingly
33 clf
34 Matplot([1 2 3;4 5 7]);
35 colorbar(1,7,-1)  // [1 7] graduations covered by colors #[1 7].
36                   // Ticks on middles of colored blocks
37
38 // 1.2)
39 clf
40 Matplot([1 2 3;4 5 7]);
41 colorbar(,,-1,"%6.1f")                // http://bugzilla.scilab.org/14790
42 assert_checkequal(gcf().children(1).ticks_format(2), "%6.1f");
43 // Same as above
44
45 // 1.3) Matplot: Default colminmax = [1 Nc]
46 clf
47 Matplot([1 2 3;4 5 7]);
48 colorbar(1,7)   // [1 7] covered with the whole colormap.
49                 // "1" at the very bottom. "7" at the very top.
50
51 // 1.4) Matplot: another colors range, with explicit colminmax
52 clf
53 Matplot([1 2 3;4 5 7])
54 colorbar(3,7, [3 7])
55 // Ticks 2.5-7.5 expected:
56 //  - integer values ticked at the middle of colors blocks
57 //  - other .5 values ticked at the blocks separations
58
59
60 // 2) Sgrayplot (Fec)
61 //    ==============
62
63 // Sgrayplot (Fec) : all colors used
64 // ---------------------------------
65 x = linspace(0,1,81);
66 z = cos(2*%pi*x)'*sin(2*%pi*x);
67 // 2.0) Default umin = minU, umax = maxU, colminmax = [1 Nc]
68 n = 4;
69 clf
70 gcf().color_map = jetcolormap(n);
71 Sgrayplot(x, x, z);
72 contour(x,x,z,[-0.5 0 0.5]);
73 gce().children.children(1:2:$-1).foreground=-1; // contours in black
74 colorbar;
75 // * 4 colors of equal spans
76 // * "-1" tick at the very bottom of the scale
77 // * "1" tick at the very top
78 // * Nice subticks
79 // * The contours levels must be at the right levels on the color bar
80
81 // 2.1) Default umin = minU, umax = maxU, colminmax = [1 Nc] (same as above)
82 n = 10;
83 clf
84 gcf().color_map = jetcolormap(n);
85 Sgrayplot(x, x, z);
86 contour(x,x,z,[-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8]);
87 gce().children.children(1:2:$-1).foreground=-1; // contours in black
88 colorbar;  // Same as above, with n = 10
89            // Nice subticks, at blocks middles & blocks limits
90
91 // Sgrayplot (Fec) : partial colors range: 8 colors used over 20
92 // -------------------------------------------------------------
93 // 2.2) umin=minU and umax=maxU, covered by a subrange of colors
94 n = 8;
95 clf
96 gcf().color_map = jetcolormap(20);
97 Sgrayplot(x, x, z,colminmax=[3 n+2]);
98 contour(x,x,z,[-0.75 -0.5 -0.25 0 0.25 0.5 0.75]);
99 colorbar(-%inf,%inf,[3 n+2]);
100 // * The contours levels must be at the right levels on the color bar
101
102 // 2.3) Explicit umin and umax, with saturation for z values out of [umin, umax]:
103 clf
104 gcf().color_map = jetcolormap(20);
105 Sgrayplot(x, x, z, zminmax = [-0.6 0.8], colminmax = [5 11]);
106 contour(x,x,z,[-0.6 -0.4 -0.2 0.2 0.4 0.6]);
107 colorbar(-0.6, 0.8,[5 11]);
108 // Sgrayplot zminmax & colminmax matches the colorbar() ones
109 // The bar is correct, wrt contours levels
110
111
112 // 3) Fac3d
113 //    =====
114 function [zz, zz1] = plotSphere()
115     r = 0.3;
116     orig = [1.5 0 0];
117     deff("[x,y,z]=sph(alp,tet)",["x=r*cos(alp).*cos(tet)+orig(1)*ones(tet)";..
118          "y=r*cos(alp).*sin(tet)+orig(2)*ones(tet)";..
119          "z=r*sin(alp)+orig(3)*ones(tet)"]);
120     [xx,yy,zz] = eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20));
121     [xx1,yy1,zz1] = eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20));
122     cc  = (xx+zz+2)*32;
123     cc1 = (xx1-orig(1)+zz1/r+2)*32;
124     clf
125     plot3d1([xx xx1],[yy yy1],list([zz,zz1],[cc cc1]),theta=70,alpha=80,flag=[5,6,3])
126     gcf().color_map = hotcolormap(128);
127 endfunction
128
129 // 3.0) Implicit min(u), max(u), on the whole color map
130 scf(10);
131 z = plotSphere();
132 colorbar;   // colorbar [black orange white] on u=[min(u)=-0.3, max(u)=0.3]
133
134 // 3.1) Implicit partial colors range, according to u-range
135 scf(0);
136 z = plotSphere();
137 colorbar(0.0, 0.15, -1);  // [cmin cmax]/Nc matches the U relative range
138                           // Colors/Values should match on figures 0 and 10
139
140 // 3.2) umin & umax such that the relative ranges [umin, umax] and colminmax match
141 z = plotSphere();
142 colorbar(,,[64 128]);  // graduations on [0 , 0.3]
143                        // Colors/Values should match on figures 0 and 10
144
145 // 3.3) umin & umax set according to partial colormap as fraction / whole u-range
146 z = plotSphere();
147 colorbar(,,[2.97 5]/6);   // ticks on [0, 0.2]
148                           // colors in [orange, yellow] must match figure #10 ones
149
150 // 3.4) after graypolarplot()
151 clf reset
152 graypolarplot
153 colorbar
154 // Values from 30 to 137. Direct colors = full color map = dark red to white.
155
156 // 4) Plot3d
157 //    ======
158 function plotSample()
159     t=[-4:0.04:4];
160     clf
161     gcf().color_map = jetcolormap(200);
162     plot3d(t,t,sin(t)'*cos(t));
163     e = gce();
164     e.color_flag = 1;
165     e.color_mode = -2;
166 endfunction
167
168 // 4.0) Bar graduated from minU=-1 to maxU=1 with the full colormap
169 scf(10);
170 plotSample();
171 colorbar;
172
173 // 4.1) Bar graduated from umin=1 to umax=2 with the full colormap
174 scf(0);
175 plotSample();
176 colorbar(1,2);
177
178 // 4.2) Bar graduated from -0.3 to 0.5 with the corresponding relative colors range
179 plotSample();
180 colorbar(-0.3,0.5, -1); // Colors/Values should match on figures 0 and 10
181
182 // 4.3) Bar graduated from minU=-1 to maxU=1, with colors #101 to #200
183 plotSample();
184 colorbar(-%inf,%inf,[101 200]); // [0 1] => [-1 1]
185
186 // 4.4) umin & umax range set to match the relative colors one
187 plotSample();
188 colorbar(,,[100 200]);  // graduations from 0 to 1
189                         // Colors/Values should match on figures 0 and 10
190
191 // 4.5) Same as above, with colors given as fractions inside the whole colormap
192 plotSample();
193 colorbar(,,[0.6 0.8]);  // values from 0.2 to 0.6
194
195 // 4.6) Same as 4.4), with colors given with $
196 plotSample();
197 colorbar(,,[$/2 $]);  // values from 0 to 1
198
199
200 // CHECKING gce()
201 // ==============
202 twinkle(gce())  // The colorbar of the last test must twinkle