@@ -1716,6 +1716,64 @@ def test_scatter_color(self):
1716
1716
with pytest .raises (ValueError ):
1717
1717
plt .scatter ([1 , 2 , 3 ], [1 , 2 , 3 ], color = [1 , 2 , 3 ])
1718
1718
1719
+ # Parameters for *test_scatter_c_kwarg*. NB: assuming that
1720
+ # the scatter plot will have 4 elements. The tuple scheme is:
1721
+ # (*c* parameter case, exception regexp key or None if no exception)
1722
+ params_scatter_c_kwarg = [
1723
+ # Single letter-sequences
1724
+ ("rgby" , None ),
1725
+ ("rgb" , "shape" ),
1726
+ ("rgbrgb" , "shape" ),
1727
+ (["rgby" ], "conversion" ),
1728
+ # Special cases
1729
+ ("red" , None ),
1730
+ ("none" , None ),
1731
+ (None , None ),
1732
+ (["r" , "g" , "b" , "none" ], None ),
1733
+ # Non-valid color spec (FWIW, 'jaune' means yellow in French)
1734
+ ("jaune" , "conversion" ),
1735
+ (["jaune" ], "conversion" ), # wrong type before wrong size
1736
+ (["jaune" ]* 4 , "conversion" ),
1737
+ # Value-mapping like
1738
+ ([0.5 ]* 3 , None ), # should emit a warning for user's eyes though
1739
+ ([0.5 ]* 4 , None ), # NB: no warning as matching size allows mapping
1740
+ ([0.5 ]* 5 , "shape" ),
1741
+ # RGB values
1742
+ ([[1 , 0 , 0 ]], None ),
1743
+ ([[1 , 0 , 0 ]]* 3 , "shape" ),
1744
+ ([[1 , 0 , 0 ]]* 4 , None ),
1745
+ ([[1 , 0 , 0 ]]* 5 , "shape" ),
1746
+ # RGBA values
1747
+ ([[1 , 0 , 0 , 0.5 ]], None ),
1748
+ ([[1 , 0 , 0 , 0.5 ]]* 3 , "shape" ),
1749
+ ([[1 , 0 , 0 , 0.5 ]]* 4 , None ),
1750
+ ([[1 , 0 , 0 , 0.5 ]]* 5 , "shape" ),
1751
+ # Mix of valid color specs
1752
+ ([[1 , 0 , 0 , 0.5 ]]* 3 + [[1 , 0 , 0 ]], None ),
1753
+ ([[1 , 0 , 0 , 0.5 ], "red" , "0.0" ], "shape" ),
1754
+ ([[1 , 0 , 0 , 0.5 ], "red" , "0.0" , "C5" ], None ),
1755
+ ([[1 , 0 , 0 , 0.5 ], "red" , "0.0" , "C5" , [0 , 1 , 0 ]], "shape" ),
1756
+ # Mix of valid and non valid color specs
1757
+ ([[1 , 0 , 0 , 0.5 ], "red" , "jaune" ], "conversion" ),
1758
+ ([[1 , 0 , 0 , 0.5 ], "red" , "0.0" , "jaune" ], "conversion" ),
1759
+ ([[1 , 0 , 0 , 0.5 ], "red" , "0.0" , "C5" , "jaune" ], "conversion" ),
1760
+ ]
1761
+
1762
+ @pytest .mark .parametrize ('c_case, re_key' , params_scatter_c_kwarg )
1763
+ def test_scatter_c_kwarg (self , c_case , re_key ):
1764
+ # Additional checking of *c* (introduced in #11383).
1765
+ REGEXP = {"shape" : "^'c' kwarg has [0-9]+ elements" , # shape mismatch
1766
+ "conversion" : "^'c' kwarg must either be valid" , # bad vals
1767
+ }
1768
+ x = y = [0 , 1 , 2 , 3 ]
1769
+ fig , ax = plt .subplots ()
1770
+
1771
+ if re_key is None :
1772
+ ax .scatter (x , y , c = c_case , edgecolors = "black" )
1773
+ else :
1774
+ with pytest .raises (ValueError , match = REGEXP [re_key ]):
1775
+ ax .scatter (x , y , c = c_case , edgecolors = "black" )
1776
+
1719
1777
1720
1778
def test_as_mpl_axes_api ():
1721
1779
# tests the _as_mpl_axes api
0 commit comments