Skip to content

Color, Fill and Shape Palettes

Color scales

%%capture

import patchworklib as pw
from plotnine import *
from plotnine_prism import *
%run nb_helpers.py
# create a base plot to compare colour scales
base = (ggplot(mtcars, aes(x = "wt", y = "mpg")) +
  geom_point(aes(colour = "cyl", shape = "cyl"), size = 3) + 
  theme_prism() + 
  theme(legend_position = (0.8, 0.8)))

base
No description has been provided for this image
<Figure Size: (400 x 400)>
# compare manual colour scale with prism colour scale
p1 = base + scale_colour_manual(values = ("blue", "red", "green"))
p2 = base + scale_colour_prism()

b1 = pw.load_ggplot(p1)
b2 = pw.load_ggplot(p2)
b1 | b2
No description has been provided for this image
print(str(list_color_pals()))
['autumn_leaves', 'beer_and_ales', 'black_and_white', 'blueprint', 'candy_bright', 'candy_soft', 'colorblind_safe', 'colors', 'diazo', 'earth_tones', 'evergreen', 'fir', 'flames', 'floral', 'greenwash', 'inferno', 'magma', 'mustard_field', 'muted_rainbow', 'neon', 'ocean', 'office', 'pastels', 'pearl', 'plasma', 'prism_dark', 'prism_light', 'purple_passion', 'quiet', 'shades_of_gray', 'spring', 'stained_glass', 'starry', 'summer', 'sunny_garden', 'the_blues', 'viridis', 'warm_and_sunny', 'warm_pastels', 'waves', 'winter_bright', 'winter_soft', 'wool_muffler']

# try out some different colour palettes
p1 = base + scale_colour_prism(palette = "purple_passion")
p2 = base + scale_colour_prism(palette = "candy_bright")

b1 = pw.load_ggplot(p1)
b2 = pw.load_ggplot(p2)
b1 | b2
No description has been provided for this image

Fill scales

# create a base plot to compare fill scales
base = (
    ggplot(mtcars, aes(x="wt", y="mpg"))
    + geom_point(aes(fill="cyl", shape="cyl"), size=3)
    + theme_prism()
    + theme(legend_position=(0.8, 0.8))
    + scale_shape_prism(palette="filled")
)

base
No description has been provided for this image
<Figure Size: (400 x 400)>
# compare manual fill scale with prism fill scale
p1 = base + scale_fill_manual(values = ("blue", "red", "green"))
p2 = base + scale_fill_prism()

b1 = pw.load_ggplot(p1)
b2 = pw.load_ggplot(p2)
b1 | b2
No description has been provided for this image
print(str(list_fill_pals()))
['autumn_leaves', 'beer_and_ales', 'black_and_white', 'blueprint', 'candy_bright', 'candy_soft', 'colorblind_safe', 'colors', 'diazo', 'earth_tones', 'evergreen', 'fir', 'flames', 'floral', 'greenwash', 'inferno', 'magma', 'mustard_field', 'muted_rainbow', 'neon', 'ocean', 'office', 'pastels', 'pearl', 'plasma', 'prism_dark', 'prism_light', 'purple_passion', 'quiet', 'shades_of_gray', 'spring', 'stained_glass', 'starry', 'summer', 'sunny_garden', 'the_blues', 'viridis', 'warm_and_sunny', 'warm_pastels', 'waves', 'winter_bright', 'winter_soft', 'wool_muffler']

# try out some different fill palettes
p1 = base + scale_fill_prism(palette = "colorblind_safe")
p2 = base + scale_fill_prism(palette = "neon")

b1 = pw.load_ggplot(p1)
b2 = pw.load_ggplot(p2)
b1 | b2
No description has been provided for this image

Shape scales

list_shape_pals()
['complete', 'default', 'filled']
def show_shapes(palette):
    import warnings
    from datar.base import rep, ceiling, seq
    from plotnine_prism.pal import prism_shape_pal
    warnings.simplefilter('ignore')

    pal = prism_shape_pal(palette)(100)
    ncol = 4
    nrow = int(ceiling(len(pal) / 4.0))
    df = tibble(
        x=rep(seq(ncol), nrow)[: len(pal)],
        y_shape=rep([1, 3, 5, 7], each=ncol)[: len(pal)],
        y_label=rep([2, 4, 6, 8], each=ncol)[: len(pal)],
        shape=pal,
    )

    return (
        ggplot(df, aes(x="x"))
        + geom_point(aes(y="y_shape", shape="shape"), size=5)
        + scale_shape_identity() 
        + geom_text(aes(y="y_label", label="shape"))
        + theme_void()
        + theme(
            panel_background=element_rect(fill="gray"), 
            legend_position="none",
        )
    )


p1 = show_shapes("complete")
p2 = show_shapes("default")
p3 = show_shapes("filled")

b1 = pw.load_ggplot(p1)
b2 = pw.load_ggplot(p2)
b3 = pw.load_ggplot(p3)
b1 | b2 | b3
No description has been provided for this image
# create a base plot to compare shape scales
from datar.data import mpg

base = (
    ggplot(mpg, aes(x="displ", y="cty"))
    + geom_point(aes(colour="class", fill="class", shape="class"))
    + theme_prism(base_size=11, base_fontface="plain", border=True)
    + theme(
        legend_position=(0.72, 0.7),
        legend_key_height=8,
    )
    + coord_cartesian()
    + scale_colour_prism(palette="floral")
    + scale_fill_prism(palette="floral")
)

base
No description has been provided for this image
<Figure Size: (400 x 400)>
# compare shape scales
p1 = base
p2 = base + scale_shape_prism(palette="default") 
p3 = base + scale_shape_prism(palette="filled") 
p4 = base + scale_shape_prism(palette="complete")

print(p1, p2, p3, p4)
No description has been provided for this image
 
No description has been provided for this image
 
No description has been provided for this image
 
No description has been provided for this image