def test_scale_manual(): def is_manual_scale(name): return (name.startswith('scale_') and name.endswith('_manual')) manual_scales = [getattr(scale_manual, name) for name in scale_manual.__dict__ if is_manual_scale(name)] values = [1, 2, 3, 4, 5] for _scale in manual_scales: s = _scale(values) assert s.palette(2) == values assert s.palette(len(values)) == values with pytest.warns(PlotnineWarning): s.palette(len(values)+1) values = {'A': 'red', 'B': 'violet', 'C': 'blue'} sc = scale_manual.scale_color_manual(values) assert sc.palette(3) == values # Breaks are matched with values sc1 = scale_manual.scale_color_manual( breaks=[True, False], values=['blue', 'red'] ) sc2 = scale_manual.scale_color_manual( breaks=[True, False], values=['red', 'blue'] ) assert sc1.map([True, False, True, False]) == ['blue', 'red'] * 2 assert sc2.map([True, False, True, False]) == ['red', 'blue'] * 2
def test_missing_manual_dict_aesthetic(): df = pd.DataFrame({ 'x': range(15), 'y': range(15), 'c': np.repeat(list('ABC'), 5) }) values = {'A': 'red', 'B': 'violet', 'D': 'blue'} p = (ggplot(df, aes('x', 'y', color='c')) + geom_point(size=3) + scale_manual.scale_color_manual(values)) assert p + _theme == 'missing_manual_dict_aesthetic'
def test_scale_manual(): def is_manual_scale(name): return (name.startswith('scale_') and name.endswith('_manual')) manual_scales = [ getattr(scale_manual, name) for name in scale_manual.__dict__ if is_manual_scale(name) ] values = [1, 2, 3, 4, 5] for _scale in manual_scales: s = _scale(values) assert s.palette(2) == values assert s.palette(len(values)) == values with pytest.warns(PlotnineWarning): s.palette(len(values) + 1) values = {'A': 'red', 'B': 'violet', 'C': 'blue'} sc = scale_manual.scale_color_manual(values) assert sc.palette(3) == values