13
13
shapely = optional_imports .get_module ('shapely' )
14
14
shapefile = optional_imports .get_module ('shapefile' )
15
15
gp = optional_imports .get_module ('geopandas' )
16
+ sk_measure = optional_imports .get_module ('skimage.measure' )
16
17
17
18
18
19
class TestDistplot (NumpyTestUtilsMixin , TestCase ):
@@ -2908,15 +2909,15 @@ def test_wrong_coordinates(self):
2908
2909
with self .assertRaises (ValueError ,
2909
2910
msg = 'Barycentric coordinates should be positive.' ):
2910
2911
_ = ff .create_ternary_contour (np .stack ((a , b )), z )
2911
- mask = a + b < 1.
2912
+ mask = a + b <= 1.
2912
2913
a = a [mask ]
2913
2914
b = b [mask ]
2914
2915
with self .assertRaises (ValueError ):
2915
2916
_ = ff .create_ternary_contour (np .stack ((a , b , a , b )), z )
2916
2917
with self .assertRaises (ValueError ,
2917
2918
msg = 'different number of values and points' ):
2918
2919
_ = ff .create_ternary_contour (np .stack ((a , b , 1 - a - b )),
2919
- np .concatenate ((z , [1 ])))
2920
+ np .concatenate ((z , [1 ])))
2920
2921
# Different sums for different points
2921
2922
c = a
2922
2923
with self .assertRaises (ValueError ):
@@ -2927,46 +2928,71 @@ def test_wrong_coordinates(self):
2927
2928
_ = ff .create_ternary_contour (np .stack ((a , b , 2 - a - b )), z )
2928
2929
2929
2930
2930
- def test_tooltip (self ):
2931
+ def test_simple_ternary_contour (self ):
2931
2932
a , b = np .mgrid [0 :1 :20j , 0 :1 :20j ]
2932
2933
mask = a + b < 1.
2933
2934
a = a [mask ].ravel ()
2934
2935
b = b [mask ].ravel ()
2935
2936
c = 1 - a - b
2936
2937
z = a * b * c
2937
- fig = ff .create_ternary_contour (np .stack ((a , b , c )), z ,
2938
- tooltip_mode = 'percents' )
2939
- fig = ff .create_ternary_contour (np .stack ((a , b , c )), z ,
2940
- tooltip_mode = 'percent' )
2941
-
2942
- with self .assertRaises (ValueError ):
2943
- fig = ff .create_ternary_contour (np .stack ((a , b , c )), z ,
2944
- tooltip_mode = 'wrong_mode' )
2938
+ fig = ff .create_ternary_contour (np .stack ((a , b , c )), z )
2939
+ fig2 = ff .create_ternary_contour (np .stack ((a , b )), z )
2940
+ np .testing .assert_array_almost_equal (fig2 ['data' ][0 ]['a' ],
2941
+ fig ['data' ][0 ]['a' ],
2942
+ decimal = 3 )
2945
2943
2946
2944
2947
- def test_simple_ternary_contour (self ):
2945
+ def test_colorscale (self ):
2948
2946
a , b = np .mgrid [0 :1 :20j , 0 :1 :20j ]
2949
2947
mask = a + b < 1.
2950
2948
a = a [mask ].ravel ()
2951
2949
b = b [mask ].ravel ()
2952
2950
c = 1 - a - b
2953
2951
z = a * b * c
2954
- fig = ff .create_ternary_contour (np .stack ((a , b , c )), z )
2955
- fig2 = ff .create_ternary_contour (np .stack ((a , b )), z )
2956
- np .testing .assert_array_equal (fig2 ['data' ][0 ]['z' ],
2957
- fig ['data' ][0 ]['z' ])
2952
+ z /= z .max ()
2953
+ fig = ff .create_ternary_contour (np .stack ((a , b , c )), z ,
2954
+ showscale = True )
2955
+ fig2 = ff .create_ternary_contour (np .stack ((a , b , c )), z ,
2956
+ showscale = True , showmarkers = True )
2957
+ assert isinstance (fig .data [- 1 ]['marker' ]['colorscale' ], tuple )
2958
+ assert isinstance (fig2 .data [- 1 ]['marker' ]['colorscale' ], str )
2959
+ assert fig .data [- 1 ]['marker' ]['cmax' ] == 1
2960
+ assert fig2 .data [- 1 ]['marker' ]['cmax' ] == 1
2958
2961
2959
2962
2960
- def test_contour_attributes (self ):
2963
+ def check_pole_labels (self ):
2961
2964
a , b = np .mgrid [0 :1 :20j , 0 :1 :20j ]
2962
2965
mask = a + b < 1.
2963
2966
a = a [mask ].ravel ()
2964
2967
b = b [mask ].ravel ()
2965
2968
c = 1 - a - b
2966
2969
z = a * b * c
2967
- contour_dict = {'ncontours' : 10 ,
2968
- 'showscale' : True }
2970
+ pole_labels = ['A' , 'B' , 'C' ]
2971
+ fig = ff .create_ternary_contour (np .stack ((a , b , c )), z ,
2972
+ pole_labels = pole_labels )
2973
+ assert fig .layout .ternary .aaxis .title .text == pole_labels [0 ]
2974
+ assert fig .data [- 1 ].hovertemplate [0 ] == pole_labels [0 ]
2975
+
2976
+
2977
+ def test_optional_arguments (self ):
2978
+ a , b = np .mgrid [0 :1 :20j , 0 :1 :20j ]
2979
+ mask = a + b <= 1.
2980
+ a = a [mask ].ravel ()
2981
+ b = b [mask ].ravel ()
2982
+ c = 1 - a - b
2983
+ z = a * b * c
2984
+ ncontours = 7
2985
+ args = [dict (showmarkers = False , showscale = False ),
2986
+ dict (showmarkers = True , showscale = False ),
2987
+ dict (showmarkers = False , showscale = True ),
2988
+ dict (showmarkers = True , showscale = True )]
2989
+
2990
+ for arg_set in args :
2991
+ fig = ff .create_ternary_contour (np .stack ((a , b , c )), z ,
2992
+ interp_mode = 'cartesian' ,
2993
+ ncontours = ncontours ,
2994
+ ** arg_set )
2995
+ # This test does not work for ilr interpolation
2996
+ print (len (fig .data ))
2997
+ assert (len (fig .data ) == ncontours + 2 + arg_set ['showscale' ])
2969
2998
2970
- fig = ff .create_ternary_contour (np .stack ((a , b , c )), z , ** contour_dict )
2971
- for key , value in contour_dict .items ():
2972
- assert fig ['data' ][0 ][key ] == value
0 commit comments