from __future__ import absolute_import from __future__ import print_function """ Color palettes derived from http://wesandersonpalettes.tumblr.com/. """ import webbrowser from ..palette import Palette _tumblr_template = 'http://wesandersonpalettes.tumblr.com/post/{0}' _palette_type = 'qualitative' # Tumblr palettes in chronological order _palettes = { 'Chevalier': { 'colors': [ (53, 82, 67), (254, 202, 73), (201, 213, 213), (187, 162, 137) ], 'type': _palette_type, 'url': _tumblr_template.format('79263620764/hotel-chevalier') }, 'Moonrise1': { 'colors': [ (114, 202, 221), (240, 165, 176), (140, 133, 54), (195, 180, 119), (250, 208, 99) ], 'type': _palette_type, 'url': _tumblr_template.format( '79263667140/sam-i-love-you-but-you-dont-know-what-youre') }, 'Mendl': { 'colors': [ (222, 141, 185), (184, 192, 246), (207, 147, 135), (92, 128, 204) ], 'type': _palette_type, 'url': _tumblr_template.format('79348206200/mendls-heaven') }, 'Margot1': { 'colors': [ (137, 119, 18), (243, 194, 164), (246, 159, 151), (254, 214, 140), (98, 144, 117) ], 'type': _palette_type, 'url': _tumblr_template.format('79348364517/margot-takes-a-bath') }, 'Cavalcanti': { 'colors': [ (209, 170, 0), (8, 50, 19), (146, 148, 96), (111, 152, 121), (132, 33, 17) ], 'type': _palette_type, 'url': _tumblr_template.format( '79348553036/castello-cavalcanti-how-can-i-help') }, 'Moonrise2': { 'colors': [ (102, 124, 116), (181, 106, 39), (194, 186, 124), (31, 25, 23) ], 'type': _palette_type, 'url': _tumblr_template.format( '79641731527/sam-why-do-you-always-use-binoculars-suzy-it') }, 'Margot2': { 'colors': [ (118, 139, 147), (188, 36, 15), (249, 236, 197), (212, 115, 41) ], 'type': _palette_type, 'url': _tumblr_template.format('79641785036/margot-takes-a-break') }, 'Moonrise3': { 'colors': [ (242, 218, 82), (197, 157, 0), (203, 203, 201), (27, 30, 20) ], 'type': _palette_type, 'url': _tumblr_template.format( '79783357790/suzy-ive-always-wanted-to-be-an-orphan-most-of') }, 'GrandBudapest1': { 'colors': [ (238, 174, 101), (251, 79, 85), (72, 19, 19), (204, 95, 39) ], 'type': _palette_type, 'url': _tumblr_template.format('79784389334/the-grand-budapest-hotel') }, 'Moonrise4': { 'colors': [ (123, 135, 97), (193, 166, 46), (79, 143, 107), (59, 69, 60), (159, 50, 8) ], 'type': _palette_type, 'url': _tumblr_template.format('79956897654/coming-soon') }, 'Zissou': { 'colors': [ (0, 153, 230), (18, 37, 90), (242, 56, 20), (223, 183, 139), (182, 195, 197) ], 'type': _palette_type, 'url': _tumblr_template.format( '79956949771/steve-zissou-dont-point-that-gun-at-him-hes-an') }, 'Royal1': { 'colors': [ (121, 164, 58), (242, 214, 175), (94, 72, 41), (24, 20, 1) ], 'type': _palette_type, 'url': _tumblr_template.format( '79957796915/royal-o-reilly-tenenbaum-1932-2001') }, 'Darjeeling1': { 'colors': [ (158, 151, 151), (194, 142, 0), (131, 102, 89), (156, 90, 51) ], 'type': _palette_type, 'url': _tumblr_template.format( '80149649946/jack-i-wonder-if-the-three-of-us-wouldve-been') }, 'FantasticFox1': { 'colors': [ (249, 219, 32), (147, 75, 78), (66, 23, 13), (194, 121, 34), (226, 200, 167) ], 'type': _palette_type, 'url': _tumblr_template.format( '80149872170/mrs-fox-you-know-you-really-are-fantastic-mr') }, 'Margot3': { 'colors': [ (135, 162, 164), (202, 160, 101), (214, 202, 191), (214, 160, 160) ], 'type': _palette_type, 'url': _tumblr_template.format( '109473707895/etheline-raleigh-says-youve-been-spending-six') }, 'GrandBudapest2': { 'colors': [ (255, 166, 142), (251, 204, 183), (140, 17, 8), (41, 11, 4) ], 'type': _palette_type, 'url': _tumblr_template.format( '109473911685/m-gustave-you-see-there-are-still-faint') }, 'Aquatic1': { 'colors': [ (52, 36, 25), (28, 64, 39), (241, 201, 14), (102, 88, 153), (184, 147, 130) ], 'type': _palette_type, 'url': _tumblr_template.format( '109568074320/steve-zissou-the-deeper-you-go-the-weirder-life') }, 'Darjeeling2': { 'colors': [ (213, 227, 216), (97, 138, 152), (249, 218, 149), (174, 75, 22), (120, 112, 100) ], 'type': _palette_type, 'url': _tumblr_template.format('109980167015/peter-fuck-the-itinerary') }, 'FantasticFox2': { 'colors': [ (228, 191, 68), (198, 87, 66), (154, 208, 187), (51, 39, 55), (171, 161, 141) ], 'type': _palette_type, 'url': _tumblr_template.format('110716093015/ash-should-we-dance') }, 'GrandBudapest3': { 'colors': [ (255, 220, 182), (37, 56, 69), (231, 173, 157), (102, 117, 110), (139, 63, 49), (150, 109, 53) ], 'type': _palette_type, 'url': _tumblr_template.format( '112305028860/m-gustave-mendls-is-the-best') }, 'Royal2': { 'colors': [ (194, 171, 186), (140, 59, 73), (182, 172, 166), (33, 32, 83), (209, 211, 213) ], 'type': _palette_type, 'url': _tumblr_template.format( '115124780615/royal-anybody-interested-in-grabbing-a-couple-of') }, 'Moonrise5': { 'colors': [ (223, 140, 144), (216, 210, 142), (245, 190, 37), (61, 74, 28), (209, 48, 96), (168, 107, 76) ], 'type': _palette_type, 'url': _tumblr_template.format( '116909186645/walt-bishop-our-daughters-been-abducted-by-one') }, 'GrandBudapest4': { 'colors': [ (186, 110, 0), (80, 32, 86), (255, 246, 187), (154, 127, 25), (31, 18, 27) ], 'type': _palette_type, 'url': _tumblr_template.format( '117849683385/concierge-and-how-long-will-you-be-staying-with') }, 'Moonrise6': { 'colors': [ (191, 81, 61), (201, 162, 150), (197, 193, 136), (123, 177, 145), (217, 174, 48) ], 'type': _palette_type, 'url': _tumblr_template.format( '118877161325/sam-im-not-that-strong-of-a-swimmer-so-i-wear-a') }, 'GrandBudapest5': { 'colors': [ (225, 146, 131), (140, 27, 76), (209, 147, 54), (231, 199, 190), (51, 12, 0) ], 'type': _palette_type, 'url': _tumblr_template.format( '122169507295/m-gustave-its-quite-a-thing-winning-the-loyalty') }, 'Aquatic2': { 'colors': [ (139, 156, 184), (233, 229, 65), (88, 159, 194), (160, 141, 94), (189, 185, 206) ], 'type': _palette_type, 'url': _tumblr_template.format( '125170837755/steve-zissou-please-dont-make-fun-of-me-i-just') }, 'Royal3': { 'colors': [ (252, 87, 108), (237, 126, 83), (226, 153, 139), (46, 23, 24), (251, 214, 202) ], 'type': _palette_type, 'url': _tumblr_template.format( '129921576355/royal-ive-always-been-considered-an-asshole-for') }, 'Moonrise7': { 'colors': [ (35, 35, 85), (97, 104, 96), (167, 91, 68), (145, 43, 41), (255, 227, 143) ], 'type': _palette_type, 'url': _tumblr_template.format( '137096576550/social-services-access-denied') }, 'Aquatic3': { 'colors': [ (214, 161, 66), (194, 128, 114), (200, 183, 161), (189, 68, 45), (100, 84, 60) ], 'type': _palette_type, 'url': _tumblr_template.format( '139482629630/ah-weve-never-made-great-husbands-have-we-of') }, 'Darjeeling3': { 'colors': [ (168, 171, 80), (255, 232, 61), (169, 211, 210), (36, 71, 125), (90, 145, 124) ], 'type': _palette_type, 'url': _tumblr_template.format( '143938510215/the-chief-steward-welcome-aboard') }, 'Darjeeling4': { 'colors': [ (116, 103, 104), (104, 71, 98), (128, 8, 6), (188, 132, 14), (174, 89, 92) ], 'type': _palette_type, 'url': _tumblr_template.format( '160334044570/i-wonder-if-the-three-of-us-wouldve-been-friends') }, 'IsleOfDogs1': { 'colors': [ (254, 197, 175), (174, 126, 113), (210, 103, 50), (50, 35, 35), (24, 18, 19) ], 'type': _palette_type, 'url': _tumblr_template.format( '172304342835/were-a-pack-of-scary-indestructible-alpha-dogs') }, 'IsleOfDogs2': { 'colors': [ (152, 108, 150), (138, 31, 31), (213, 171, 85), (14, 12, 12), (220, 194, 201), (130, 114, 108) ], 'type': _palette_type, 'url': _tumblr_template.format( '172586941620/be-advised-that-small-dogs-still-pose-a-threat-to') }, 'IsleOfDogs3': { 'colors': [ (229, 142, 167), (224, 193, 160), (30, 18, 99), (216, 177, 72) ], 'type': _palette_type, 'url': _tumblr_template.format( '184134532240/tracy-walker-that-crook-hes-stealing-the') }, } _map_names = {} for k in _palettes: _map_names[k.lower()] = k class WesAndersonMap(Palette): """ Representation of a color map with matplotlib compatible views of the map. Parameters ---------- name : str map_type : str colors : list Colors as list of 0-255 RGB triplets. url : str URL on the web where this color map can be viewed. Attributes ---------- name : str type : str number : int Number of colors in color map. colors : list Colors as list of 0-255 RGB triplets. hex_colors : list mpl_colors : list mpl_colormap : matplotlib LinearSegmentedColormap wap_url : str URL on the web where this color map can be viewed. """ def __init__(self, name, map_type, colors, url): super(WesAndersonMap, self).__init__(name, map_type, colors) self.url = url def wap(self): """ View this color palette on the web. Will open a new tab in your web browser. """ webbrowser.open_new_tab(self.url) # pragma: no cover def print_maps(): """ Print a list of Wes Anderson palettes. """ namelen = max(len(k) for k in _palettes) fmt = '{0:' + str(namelen + 4) + '}{1:16}{2:}' for k in sorted(_palettes.keys()): print(fmt.format(k, _palettes[k]['type'], len(_palettes[k]['colors']))) def get_map(name, reverse=False): """ Get a Wes Anderson palette by name. Parameters ---------- name : str Name of map. Use palettable.wesanderson.print_maps to see available names. reverse : bool, optional If True reverse colors from their default order. Returns ------- palette : WesAndersonMap """ name = _map_names[name.lower()] palette = _palettes[name] if reverse: name += '_r' palette['colors'] = list(reversed(palette['colors'])) return WesAndersonMap( name, palette['type'], palette['colors'], palette['url']) def _get_all_maps(): """ Returns a dictionary of all Wes Anderson palettes, including reversed ones. """ fmt = '{0}_{1}'.format d = dict( (fmt(name, m.number), m) for name, m in ((name, get_map(name)) for name in _palettes)) fmt = '{0}_{1}_r'.format d.update( dict( (fmt(name, m.number), m) for name, m in ( (name, get_map(name, reverse=True)) for name in _palettes))) return d