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
# 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
print(str(list_color_pals()))
# 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
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
# 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
print(str(list_fill_pals()))
# 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
Shape scales
list_shape_pals()
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
# 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
# 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)