scatter with extended polyline properties mark_size, mark_foreground, mark_background
[scilab.git] / scilab / modules / graphics / tests / unit_tests / scatter.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) Scilab Enterprises - 2015-2010 - Juergen Koch <juergen.koch@hs-esslingen.de>
4 //
5 // This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- TEST WITH GRAPHIC -->
9
10 //
11 // test data
12 rand("seed",0);
13 x = linspace(0,2,200);
14 y = exp(-x).*cos(10*x) + 0.2*rand(1,length(x));
15 s = linspace(1,30,length(x));
16
17 //
18 // Test #1 Create 2D scatter plot 
19 h = scf();
20 p = scatter(x,y);
21 assert_checkequal(p.line_mode,"off");
22 assert_checkequal(p.fill_mode,"off");
23 assert_checkequal(p.thickness,1);
24 assert_checkequal(p.mark_mode,"on");
25 assert_checkequal(p.mark_style,9);
26 assert_checkequal(p.mark_size_unit,"point");
27 assert_checkequal(p.mark_size,7);
28 assert_checkequal(p.mark_foreground,2);
29 assert_checkequal(p.mark_background,0);
30 close(h);
31 //
32 // Test #2 Vary marker size
33 h = scf();
34 p = scatter(x,y,s);
35 assert_checkequal(p.line_mode,"off");
36 assert_checkequal(p.fill_mode,"off");
37 assert_checkequal(p.thickness,1);
38 assert_checkequal(p.mark_mode,"on");
39 assert_checkequal(p.mark_style,9);
40 assert_checkequal(p.mark_size_unit,"point");
41 assert_checkequal(p.mark_size,ceil(sqrt(4*s/%pi)));
42 assert_checkequal(p.mark_foreground,2);
43 assert_checkequal(p.mark_background,0);
44 close(h);
45 //
46 // Test #3 Vary marker size and color
47 h = scf();
48 set(gcf(),"color_map",coolcolormap(64))
49 p = scatter(x,y,s,x);
50 assert_checkequal(p.line_mode,"off");
51 assert_checkequal(p.fill_mode,"off");
52 assert_checkequal(p.thickness,1);
53 assert_checkequal(p.mark_mode,"on");
54 assert_checkequal(p.mark_style,9);
55 assert_checkequal(p.mark_size_unit,"point");
56 assert_checkequal(p.mark_size,ceil(sqrt(4*s/%pi)));
57 assert_checkequal(p.mark_foreground,floor((64-1)*(x-min(x))/(max(x)-min(x))+1));
58 assert_checkequal(p.mark_background,0);
59 close(h);
60 //
61 // Test #4 Fill the markers
62 h = scf();
63 p = scatter(x,y,s,y,"fill");
64 assert_checkequal(p.line_mode,"off");
65 assert_checkequal(p.fill_mode,"off");
66 assert_checkequal(p.thickness,1);
67 assert_checkequal(p.mark_mode,"on");
68 assert_checkequal(p.mark_style,9);
69 assert_checkequal(p.mark_size_unit,"point");
70 assert_checkequal(p.mark_size,ceil(sqrt(4*s/%pi)));
71 assert_checkequal(p.mark_foreground,floor((32-1)*(y-min(y))/(max(y)-min(y))+1));
72 assert_checkequal(p.mark_background,floor((32-1)*(y-min(y))/(max(y)-min(y))+1));
73 close(h);
74 //
75 // Test #5 Specify subplot for scatter plot
76 h = scf();
77 subplot(2,1,1);
78 p1 = scatter(gca(),x,y);
79 assert_checkequal(p1.line_mode,"off");
80 assert_checkequal(p1.fill_mode,"off");
81 assert_checkequal(p1.thickness,1);
82 assert_checkequal(p1.mark_mode,"on");
83 assert_checkequal(p1.mark_style,9);
84 assert_checkequal(p1.mark_size_unit,"point");
85 assert_checkequal(p1.mark_size,7);
86 assert_checkequal(p1.mark_foreground,2);
87 assert_checkequal(p1.mark_background,0);
88 subplot(2,1,2);
89 p2 = scatter(gca(),x,y,"fill","s");
90 assert_checkequal(p2.line_mode,"off");
91 assert_checkequal(p2.fill_mode,"off");
92 assert_checkequal(p2.thickness,1);
93 assert_checkequal(p2.mark_mode,"on");
94 assert_checkequal(p2.mark_style,11);
95 assert_checkequal(p2.mark_size_unit,"point");
96 assert_checkequal(p2.mark_size,7);
97 assert_checkequal(p2.mark_foreground,2);
98 assert_checkequal(p2.mark_background,2);
99 close(h);
100
101 //
102 // test data
103 rand("seed",0);
104 x = rand(1,200);
105 y = rand(1,200);
106
107 //
108 // Test #6 Specify marker symbol
109 h = scf();
110 p = scatter(x,y,"d");
111 assert_checkequal(p.line_mode,"off");
112 assert_checkequal(p.fill_mode,"off");
113 assert_checkequal(p.thickness,1);
114 assert_checkequal(p.mark_mode,"on");
115 assert_checkequal(p.mark_style,5);
116 assert_checkequal(p.mark_size_unit,"point");
117 assert_checkequal(p.mark_size,7);
118 assert_checkequal(p.mark_foreground,2);
119 assert_checkequal(p.mark_background,0);
120 close(h);
121 //
122 // Test #7 Change marker color and line width
123 h = scf();
124 p = scatter(x,y,"markerEdgeColor",[0 .4 .4],...
125                 "markerFaceColor",[0 .8 .8],...
126                 "linewidth",1.5);
127 assert_checkequal(p.line_mode,"off");
128 assert_checkequal(p.fill_mode,"off");
129 assert_checkequal(p.thickness,1.5);
130 assert_checkequal(p.mark_mode,"on");
131 assert_checkequal(p.mark_style,9);
132 assert_checkequal(p.mark_size_unit,"point");
133 assert_checkequal(p.mark_size,7);
134 assert_checkequal(p.mark_foreground,color(0,.4*255,.4*255));
135 assert_checkequal(p.mark_background,color(0,.8*255,.8*255));
136 close(h);
137
138 //
139 // Test data
140 t = linspace(0,25,200);
141 x = t.*cos(t);
142 y = t.*sin(t);
143
144 //
145 // Test #8 Modify scatter plot after creation
146 h = scf();
147 p = scatter(x,y,t);
148 p.thickness = 0.5;
149 p.mark_foreground = color("darkblue");
150 p.mark_background = color("darkcyan");
151 assert_checkequal(p.line_mode,"off");
152 assert_checkequal(p.fill_mode,"off");
153 assert_checkequal(p.thickness,0.5);
154 assert_checkequal(p.mark_mode,"on");
155 assert_checkequal(p.mark_style,9);
156 assert_checkequal(p.mark_size_unit,"point");
157 assert_checkequal(p.mark_size,ceil(sqrt(4*t/%pi)));
158 assert_checkequal(p.mark_foreground,color("darkblue"));
159 assert_checkequal(p.mark_background,color("darkcyan"));
160 close(h);
161 //
162 // Test #9 Testing graphics handle
163 h = scf();
164 p = scatter(gca(),x,y,t);
165 assert_checkequal(p.line_mode,"off");
166 assert_checkequal(p.fill_mode,"off");
167 assert_checkequal(p.thickness,1);
168 assert_checkequal(p.mark_mode,"on");
169 assert_checkequal(p.mark_style,9);
170 assert_checkequal(p.mark_size_unit,"point");
171 assert_checkequal(p.mark_size,ceil(sqrt(4*t/%pi)));
172 assert_checkequal(p.mark_foreground,2);
173 assert_checkequal(p.mark_background,0);
174 close(h);
175
176 //
177 // Test data
178 x = 0.1:0.2:0.9;
179
180 //
181 // Test #10 Testing single color string specification
182 h = scf();
183 p = scatter(x,x,[],"red");
184 assert_checkequal(p.line_mode,"off");
185 assert_checkequal(p.fill_mode,"off");
186 assert_checkequal(p.thickness,1);
187 assert_checkequal(p.mark_mode,"on");
188 assert_checkequal(p.mark_style,9);
189 assert_checkequal(p.mark_size_unit,"point");
190 assert_checkequal(p.mark_size,7);
191 assert_checkequal(p.mark_foreground,color("red"));
192 assert_checkequal(p.mark_background,0);
193 close(h);
194 //
195 // Test #11 Testing color vector of strings specification
196 h = scf();
197 p = scatter(x,x,[],["red" "green" "blue" "grey" "black"]);
198 assert_checkequal(p.line_mode,"off");
199 assert_checkequal(p.fill_mode,"off");
200 assert_checkequal(p.thickness,1);
201 assert_checkequal(p.mark_mode,"on");
202 assert_checkequal(p.mark_style,9);
203 assert_checkequal(p.mark_size_unit,"point");
204 assert_checkequal(p.mark_size,7);
205 assert_checkequal(p.mark_foreground,[color("red") color("green") color("blue") color("grey") color("black")]);
206 assert_checkequal(p.mark_background,0);
207 close(h);
208 //
209 // Test #12 Testing color RGB matrix specification
210 h = scf();
211 RGB = [255   0   0
212          0 255   0
213          0   0 255
214        128 128 128
215          0   0   0];
216 p = scatter(x,x,[],RGB/255);
217 assert_checkequal(p.line_mode,"off");
218 assert_checkequal(p.fill_mode,"off");
219 assert_checkequal(p.thickness,1);
220 assert_checkequal(p.mark_mode,"on");
221 assert_checkequal(p.mark_style,9);
222 assert_checkequal(p.mark_size_unit,"point");
223 assert_checkequal(p.mark_size,7);
224 assert_checkequal(p.mark_foreground,...
225 [color(RGB(1,1),RGB(1,2),RGB(1,3))...
226  color(RGB(2,1),RGB(2,2),RGB(2,3))...
227  color(RGB(3,1),RGB(3,2),RGB(3,3))...
228  color(RGB(4,1),RGB(4,2),RGB(4,3))...
229  color(RGB(5,1),RGB(5,2),RGB(5,3))]);
230 assert_checkequal(p.mark_background,0);
231 close(h);