@@ -77,182 +77,6 @@ def test_pruneOutsideBox3D(self):
77
77
plt .close ("all" )
78
78
79
79
80
- def test_replaceDataWithNaN ():
81
- """test against matlab2tikz implementation.
82
-
83
- octave code to generate baseline results.
84
- Note that octave has indexing 1...N, whereas python has indexing 0...N-1.
85
- ```octave
86
- x = linspace(1, 100, 20);
87
- y1 = linspace(1, 100, 20);
88
-
89
- figure
90
- plot(x, y1)
91
- xlim([20, 80])
92
- ylim([20, 80])
93
- cleanfigure;
94
- ```
95
- """
96
- id_replace = np .array ([0 , 16 ])
97
- xData = np .linspace (1 , 100 , 20 )
98
- yData = xData .copy ()
99
- data = np .stack ([xData , yData ], axis = 1 )
100
-
101
- newdata = cleanfigure ._replace_data_with_NaN (data , id_replace , False )
102
- assert newdata .shape == data .shape
103
- assert np .any (np .isnan (newdata ))
104
-
105
-
106
- def test_removeData ():
107
- """test against matlab2tikz implementation.
108
-
109
- octave code to generate baseline results.
110
- Note that octave has indexing 1...N, whereas python has indexing 0...N-1.
111
- ```octave
112
- x = linspace(1, 100, 20);
113
- y1 = linspace(1, 100, 20);
114
-
115
- figure
116
- plot(x, y1)
117
- xlim([20, 80])
118
- ylim([20, 80])
119
- cleanfigure;
120
- ```
121
- """
122
- id_remove = np .array ([1 , 2 , 3 , 17 , 18 , 19 ])
123
- xData = np .linspace (1 , 100 , 20 )
124
- yData = xData .copy ()
125
- data = np .stack ([xData , yData ], axis = 1 )
126
-
127
- newdata = cleanfigure ._remove_data (data , id_remove , False )
128
- assert newdata .shape == (14 , 2 )
129
-
130
-
131
- def test_removeNaNs ():
132
- """test against matlab2tikz implementation
133
-
134
- octave code to generate baseline results. Note that octave has indexing 1...N, whereas python has indexing 0...N-1.
135
- ```octave
136
- x = linspace(1, 100, 20);
137
- y1 = linspace(1, 100, 20);
138
-
139
- figure
140
- plot(x, y1)
141
- xlim([20, 80])
142
- ylim([20, 80])
143
- cleanfigure;
144
- ```
145
- """
146
- id_replace = np .array ([0 , 16 ])
147
- id_remove = np .array ([1 , 2 , 3 , 17 , 18 , 19 ])
148
- xData = np .linspace (1 , 100 , 20 )
149
- yData = xData .copy ()
150
- data = cleanfigure ._stack_data_2D (xData , yData )
151
-
152
- data = cleanfigure ._replace_data_with_NaN (data , id_replace , False )
153
- data = cleanfigure ._remove_data (data , id_remove , False )
154
- data = cleanfigure ._remove_NaNs (data )
155
- assert not np .any (np .isnan (data ))
156
- assert data .shape == (12 , 2 )
157
-
158
-
159
- def test_isInBox ():
160
- """octave code to generate baseline results
161
-
162
- ```octave
163
- x = 1:10;
164
- y = 1:10;
165
- data = [x', y'];
166
- xlim = [3, 7];
167
- ylim = [3, 7];
168
- mask = isInBox(data, xlim, ylim)
169
- ```
170
- """
171
- x = np .linspace (1 , 100 , 20 )
172
- y = np .linspace (1 , 100 , 20 )
173
- data = np .stack ([x , y ], axis = 1 )
174
- xLim = np .array ([20 , 80 ])
175
- yLim = np .array ([20 , 80 ])
176
- tol = 1.0e-10
177
- relaxedXLim = xLim + np .array ([- tol , tol ])
178
- relaxedYLim = yLim + np .array ([- tol , tol ])
179
- mask = cleanfigure ._isInBox (data , relaxedXLim , relaxedYLim )
180
- assert int (np .sum (mask )) == 12
181
-
182
-
183
- def test_getVisualLimits ():
184
- """octave code
185
- ```octave
186
- addpath ("../matlab2tikz/src")
187
-
188
- x = linspace(1, 100, 20);
189
- y1 = linspace(1, 100, 20);
190
-
191
- figure
192
- plot(x, y1)
193
- xlim([20, 80])
194
- ylim([20, 80])
195
- set(gcf,'Units','Inches');
196
- set(gcf,'Position',[2.5 2.5 5 5])
197
- cleanfigure;
198
- ```
199
- """
200
- x = np .linspace (1 , 100 , 20 )
201
- y = np .linspace (1 , 100 , 20 )
202
-
203
- with plt .rc_context (rc = RC_PARAMS ):
204
- fig , ax = plt .subplots (1 , 1 , figsize = (5 , 5 ))
205
- (l ,) = ax .plot (x , y )
206
- ax .set_xlim ([20 , 80 ])
207
- ax .set_ylim ([20 , 80 ])
208
- xLim , yLim = cleanfigure ._get_visual_limits (fig , ax )
209
- assert np .allclose (xLim , np .array ([20 , 80 ]))
210
- assert np .allclose (yLim , np .array ([20 , 80 ]))
211
- plt .close ("all" )
212
-
213
-
214
- def test_opheimSimplify ():
215
- """test path simplification
216
-
217
- octave code
218
- ```octave
219
- addpath ("../matlab2tikz/src")
220
-
221
- x = linspace(1, 100, 20);
222
- y1 = linspace(1, 100, 20);
223
-
224
- figure
225
- plot(x, y1)
226
- xlim([20, 80])
227
- ylim([20, 80])
228
- set(gcf,'Units','Inches');
229
- set(gcf,'Position',[2.5 2.5 5 5])
230
- cleanfigure;
231
- ```
232
- """
233
- x = np .array (
234
- [
235
- 21.842106 ,
236
- 27.052631 ,
237
- 32.263157 ,
238
- 37.473682 ,
239
- 42.68421 ,
240
- 47.894737 ,
241
- 53.105263 ,
242
- 58.31579 ,
243
- 63.526318 ,
244
- 68.73684 ,
245
- 73.947365 ,
246
- 79.1579 ,
247
- ]
248
- )
249
- y = x .copy ()
250
- tol = 0.02
251
- mask = cleanfigure ._opheim_simplify (x , y , tol )
252
- assert mask .shape == (12 ,)
253
- assert np .allclose (mask * 1 , np .array ([1 ] + [0 ] * 10 + [1 ]))
254
-
255
-
256
80
@pytest .mark .parametrize (
257
81
"function, result" , [("plot" , False ), ("step" , True )],
258
82
)
@@ -797,136 +621,6 @@ def test_subplot(self):
797
621
plt .close ("all" )
798
622
799
623
800
- def test_segmentVisible ():
801
- """test against matlab2tikz implementation
802
-
803
- octave code to generate baseline results. Note that octave has indexing 1...N, whereas python has indexing 0...N-1.
804
- ```octave
805
- x = linspace(1, 100, 20);
806
- y1 = linspace(1, 100, 20);
807
-
808
- figure
809
- plot(x, y1)
810
- xlim([20, 80])
811
- ylim([20, 80])
812
- cleanfigure;
813
- ```
814
- """
815
-
816
- y = np .linspace (1 , 100 , 20 )
817
- x = y .copy ()
818
- data = np .stack ([x , y ], axis = 1 )
819
- dataIsInBox = np .array ([0 ] * 4 + [1 ] * 12 + [0 ] * 4 ) == 1
820
- xLim = np .array ([20 , 80 ])
821
- yLim = np .array ([20 , 80 ])
822
- mask = cleanfigure ._segment_visible (data , dataIsInBox , xLim , yLim )
823
- assert np .allclose (mask * 1 , np .array ([0 ] * 3 + [1 ] * 13 + [0 ] * 3 ))
824
-
825
-
826
- def test_crossLines ():
827
- """test against matplotlib2tikz implementation"""
828
- y = np .linspace (1 , 100 , 20 )
829
- x = y .copy ()
830
- data = np .stack ([x , y ], axis = 1 )
831
- X1 = data [:- 1 , :]
832
- X2 = data [1 :, :]
833
- X3 = np .array ([80 , 20 ])
834
- X4 = np .array ([80 , 80 ])
835
- Lambda = cleanfigure ._cross_lines (X1 , X2 , X3 , X4 )
836
-
837
- expected_result = np .array (
838
- [
839
- [15.16162 , 1.00000 ],
840
- [14.16162 , 1.00000 ],
841
- [13.16162 , 1.00000 ],
842
- [12.16162 , 1.00000 ],
843
- [11.16162 , 1.00000 ],
844
- [10.16162 , 1.00000 ],
845
- [9.16162 , 1.00000 ],
846
- [8.16162 , 1.00000 ],
847
- [7.16162 , 1.00000 ],
848
- [6.16162 , 1.00000 ],
849
- [5.16162 , 1.00000 ],
850
- [4.16162 , 1.00000 ],
851
- [3.16162 , 1.00000 ],
852
- [2.16162 , 1.00000 ],
853
- [1.16162 , 1.00000 ],
854
- [0.16162 , 1.00000 ],
855
- [- 0.83838 , 1.00000 ],
856
- [- 1.83838 , 1.00000 ],
857
- [- 2.83838 , 1.00000 ],
858
- ]
859
- )
860
- assert np .allclose (Lambda , expected_result , rtol = 1.0e-4 )
861
-
862
-
863
- def test_segmentsIntersect ():
864
- """test against matplotlib2tikz implementation"""
865
- y = np .linspace (1 , 100 , 20 )
866
- x = y .copy ()
867
- data = np .stack ([x , y ], axis = 1 )
868
- X1 = data [:- 1 , :]
869
- X2 = data [1 :, :]
870
- X3 = np .array ([80 , 20 ])
871
- X4 = np .array ([80 , 80 ])
872
- mask = cleanfigure ._segments_intersect (X1 , X2 , X3 , X4 )
873
- assert np .allclose (mask * 1 , np .zeros_like (mask ))
874
-
875
-
876
- def test_pixelate ():
877
- xToPix = 49.952
878
- yToPix = 49.952
879
- xData = np .array (
880
- [
881
- 21.842 ,
882
- 27.053 ,
883
- 32.263 ,
884
- 37.474 ,
885
- 42.684 ,
886
- 47.895 ,
887
- 53.105 ,
888
- 58.316 ,
889
- 63.526 ,
890
- 68.737 ,
891
- 73.947 ,
892
- 79.158 ,
893
- ]
894
- )
895
- yData = xData .copy ()
896
- mask = cleanfigure ._pixelate (xData , yData , xToPix , yToPix )
897
- assert mask .shape == (12 ,)
898
- assert np .all (mask )
899
-
900
-
901
- def test_corners3D ():
902
- xlim = ylim = zlim = np .array ([- 5 , 5 ])
903
- corners = cleanfigure ._corners3D (xlim , ylim , zlim )
904
-
905
- assert corners .shape == (8 , 3 )
906
- assert np .sum (corners ) == 0
907
-
908
-
909
- def test_corners2D ():
910
- xLim = np .array ([20 , 80 ])
911
- yLim = np .array ([20 , 80 ])
912
- corners = cleanfigure ._corners2D (xLim , yLim )
913
-
914
- import itertools
915
-
916
- expected_output = tuple (np .array (t ) for t in itertools .product ([20 , 80 ], [20 , 80 ]))
917
- assert np .allclose (corners , expected_output )
918
-
919
-
920
- def test_getHeightWidthInPixels ():
921
- with plt .rc_context (rc = RC_PARAMS ):
922
- fig , axes = plt .subplots (1 , 1 , figsize = (5 , 5 ))
923
- w , h = cleanfigure ._get_width_height_in_pixels (fig , [600 , 400 ])
924
- assert w == 600 and h == 400
925
- w , h = cleanfigure ._get_width_height_in_pixels (fig , 600 )
926
- assert w == h
927
- plt .close ("all" )
928
-
929
-
930
624
def test_memory ():
931
625
import matplotlib .pyplot as plt
932
626
import numpy as np
0 commit comments