@@ -212,9 +212,26 @@ def test_multivar_resample():
212212
213213def test_bivar_cmap_call_tuple ():
214214 cmap = mpl .bivar_colormaps ['BiOrangeBlue' ]
215- assert_allclose (cmap ((1.0 , 1.0 )), (1 , 1 , 1 , 1 ), atol = 0.01 )
216- assert_allclose (cmap ((0.0 , 0.0 )), (0 , 0 , 0 , 1 ), atol = 0.1 )
217- assert_allclose (cmap ((0.0 , 0.0 ), alpha = 0.1 ), (0 , 0 , 0 , 0.1 ), atol = 0.1 )
215+ assert_allclose (cmap ((1.0 , 1.0 )), (1 , 1 , 1 , 1 ))
216+ assert_allclose (cmap ((0.0 , 0.0 )), (0 , 0 , 0 , 1 ))
217+ assert_allclose (cmap ((0.2 , 0.8 )), (0.2 , 0.5 , 0.8 , 1 ))
218+ assert_allclose (cmap ((0.0 , 0.0 ), alpha = 0.1 ), (0 , 0 , 0 , 0.1 ))
219+
220+
221+ def test_bivar_cmap_lut_smooth ():
222+ cmap = mpl .bivar_colormaps ['BiOrangeBlue' ]
223+
224+ assert_allclose (cmap .lut [:, 0 , 0 ], np .linspace (0 , 1 , 256 ))
225+ assert_allclose (cmap .lut [:, 255 , 0 ], np .linspace (0 , 1 , 256 ))
226+ assert_allclose (cmap .lut [:, 0 , 1 ], np .linspace (0 , 0.5 , 256 ))
227+ assert_allclose (cmap .lut [:, 153 , 1 ], np .linspace (0.3 , 0.8 , 256 ))
228+ assert_allclose (cmap .lut [:, 255 , 1 ], np .linspace (0.5 , 1 , 256 ))
229+
230+ assert_allclose (cmap .lut [0 , :, 1 ], np .linspace (0 , 0.5 , 256 ))
231+ assert_allclose (cmap .lut [102 , :, 1 ], np .linspace (0.2 , 0.7 , 256 ))
232+ assert_allclose (cmap .lut [255 , :, 1 ], np .linspace (0.5 , 1 , 256 ))
233+ assert_allclose (cmap .lut [0 , :, 2 ], np .linspace (0 , 1 , 256 ))
234+ assert_allclose (cmap .lut [255 , :, 2 ], np .linspace (0 , 1 , 256 ))
218235
219236
220237def test_bivar_cmap_call ():
@@ -312,20 +329,36 @@ def test_bivar_cmap_call():
312329 match = "only implemented for use with with floats" ):
313330 cs = cmap ([(0 , 5 , 9 , 0 , 0 , 9 ), (0 , 0 , 0 , 5 , 11 , 11 )])
314331
315- # test origin
316- cmap = mpl .bivar_colormaps ['BiOrangeBlue' ].with_extremes (origin = (0.5 , 0.5 ))
317- assert_allclose (cmap [0 ](0.5 ),
318- (0.50244140625 , 0.5024222412109375 , 0.50244140625 , 1 ))
319- assert_allclose (cmap [1 ](0.5 ),
320- (0.50244140625 , 0.5024222412109375 , 0.50244140625 , 1 ))
321- cmap = mpl .bivar_colormaps ['BiOrangeBlue' ].with_extremes (origin = (1 , 1 ))
322- assert_allclose (cmap [0 ](1. ),
323- (0.99853515625 , 0.9985467529296875 , 0.99853515625 , 1.0 ))
324- assert_allclose (cmap [1 ](1. ),
325- (0.99853515625 , 0.9985467529296875 , 0.99853515625 , 1.0 ))
332+
333+ def test_bivar_cmap_1d_origin ():
334+ """
335+ Test getting 1D colormaps with different origins
336+ """
337+ cmap0 = mpl .bivar_colormaps ['BiOrangeBlue' ]
338+ assert_allclose (cmap0 [0 ].colors [:, 0 ], np .linspace (0 , 1 , 256 ))
339+ assert_allclose (cmap0 [0 ].colors [:, 1 ], np .linspace (0 , 0.5 , 256 ))
340+ assert_allclose (cmap0 [0 ].colors [:, 2 ], 0 )
341+ assert_allclose (cmap0 [1 ].colors [:, 0 ], 0 )
342+ assert_allclose (cmap0 [1 ].colors [:, 1 ], np .linspace (0 , 0.5 , 256 ))
343+ assert_allclose (cmap0 [1 ].colors [:, 2 ], np .linspace (0 , 1 , 256 ))
344+
345+ cmap1 = cmap0 .with_extremes (origin = (0 , 1 ))
346+ assert_allclose (cmap1 [0 ].colors [:, 0 ], np .linspace (0 , 1 , 256 ))
347+ assert_allclose (cmap1 [0 ].colors [:, 1 ], np .linspace (0.5 , 1 , 256 ))
348+ assert_allclose (cmap1 [0 ].colors [:, 2 ], 1 )
349+ assert_allclose (cmap1 [1 ].colors , cmap0 [1 ].colors )
350+
351+ cmap2 = cmap0 .with_extremes (origin = (0.2 , 0.4 ))
352+ assert_allclose (cmap2 [0 ].colors [:, 0 ], np .linspace (0 , 1 , 256 ))
353+ assert_allclose (cmap2 [0 ].colors [:, 1 ], np .linspace (0.2 , 0.7 , 256 ))
354+ assert_allclose (cmap2 [0 ].colors [:, 2 ], 0.4 )
355+ assert_allclose (cmap2 [1 ].colors [:, 0 ], 0.2 )
356+ assert_allclose (cmap2 [1 ].colors [:, 1 ], np .linspace (0.1 , 0.6 , 256 ))
357+ assert_allclose (cmap2 [1 ].colors [:, 2 ], np .linspace (0 , 1 , 256 ))
358+
326359 with pytest .raises (KeyError ,
327360 match = "only 0 or 1 are valid keys" ):
328- cs = cmap [2 ]
361+ cs = cmap0 [2 ]
329362
330363
331364def test_bivar_getitem ():
@@ -433,22 +466,18 @@ def test_bivar_cmap_from_image():
433466
434467
435468def test_bivar_resample ():
436- cmap = mpl .bivar_colormaps ['BiOrangeBlue' ].resampled ((2 , 2 ))
437- assert_allclose (cmap ((0.25 , 0.25 )), (0 , 0 , 0 , 1 ), atol = 1e-2 )
438-
439- cmap = mpl .bivar_colormaps ['BiOrangeBlue' ].resampled ((- 2 , 2 ))
440- assert_allclose (cmap ((0.25 , 0.25 )), (1. , 0.5 , 0. , 1. ), atol = 1e-2 )
469+ cmap = mpl .bivar_colormaps ['BiOrangeBlue' ]
441470
442- cmap = mpl .bivar_colormaps ['BiOrangeBlue' ].resampled ((2 , - 2 ))
443- assert_allclose (cmap ((0.25 , 0.25 )), (0. , 0.5 , 1. , 1. ), atol = 1e-2 )
471+ assert_allclose (cmap .resampled ((2 , 2 ))((0.25 , 0.25 )), (0 , 0 , 0 , 1 ))
472+ assert_allclose (cmap .resampled ((- 2 , 2 ))((0.25 , 0.25 )), (1. , 0.5 , 0. , 1. ))
473+ assert_allclose (cmap .resampled ((2 , - 2 ))((0.25 , 0.25 )), (0. , 0.5 , 1. , 1. ))
474+ assert_allclose (cmap .resampled ((- 2 , - 2 ))((0.25 , 0.25 )), (1 , 1 , 1 , 1 ))
444475
445- cmap = mpl . bivar_colormaps [ 'BiOrangeBlue' ]. resampled (( - 2 , - 2 ))
446- assert_allclose (cmap (( 0.25 , 0.25 )), (1 , 1 , 1 , 1 ), atol = 1e-2 )
476+ assert_allclose ( cmap (( 0.8 , 0.4 )), ( 0.8 , 0.6 , 0.4 , 1. ))
477+ assert_allclose (cmap . reversed ()(( 1 - 0.8 , 1 - 0.4 )), (0.8 , 0.6 , 0.4 , 1. ) )
447478
448- cmap = mpl .bivar_colormaps ['BiOrangeBlue' ].reversed ()
449- assert_allclose (cmap ((0.25 , 0.25 )), (0.748535 , 0.748547 , 0.748535 , 1. ), atol = 1e-2 )
450- cmap = mpl .bivar_colormaps ['BiOrangeBlue' ].transposed ()
451- assert_allclose (cmap ((0.25 , 0.25 )), (0.252441 , 0.252422 , 0.252441 , 1. ), atol = 1e-2 )
479+ assert_allclose (cmap ((0.6 , 0.2 )), (0.6 , 0.4 , 0.2 , 1. ))
480+ assert_allclose (cmap .transposed ()((0.2 , 0.6 )), (0.6 , 0.4 , 0.2 , 1. ))
452481
453482 with pytest .raises (ValueError , match = "lutshape must be of length" ):
454483 cmap = cmap .resampled (4 )
0 commit comments