Download notebook (.ipynb)

Line Types#

from lets_plot import *

from common import docs_dark_theme
LetsPlot.setup_html()

Predefined Patterns#

def get_predefined_linetype_plot():
    linetype_names = ['blank', 'solid', 'dashed', 'dotted', 'dotdash', 'longdash', 'twodash']
    linetype_ids = list(range(len(linetype_names)))
    return ggplot() + \
        geom_spoke(aes(y=linetype_ids), x=0, angle=0, radius=1, size=4, color="#fa9fb5", alpha=.25) + \
        geom_spoke(aes(y=linetype_ids, linetype=linetype_ids), x=0, angle=0, radius=1, size=2, show_legend=False) + \
        geom_label(aes(y=linetype_ids, label=linetype_ids), \
                   x=0, hjust=0, size=12, label_size=0, label_format="{d}:", position=position_nudge(y=.3), family='mono') + \
        geom_label(aes(y=linetype_ids, label=linetype_names), \
                   x=.04, hjust=0, size=12, label_size=0, label_format="'{}'", position=position_nudge(y=.3), family='mono') + \
        scale_y_reverse() + \
        scale_linetype_identity() + \
        coord_cartesian(xlim=[0, 1], ylim=[-.5, len(linetype_names) - .75]) + \
        ggsize(800, 600) + \
        theme_void()
pl_plot = get_predefined_linetype_plot()
ggsave(pl_plot, "aesthetics_linetype.png")
pl_plot
pl_plot_dark = get_predefined_linetype_plot() + docs_dark_theme()
ggsave(pl_plot_dark, "aesthetics_linetype_dark.png")
pl_plot_dark

Custom Patterns#

def get_custom_linetype_plot():
    linetype_patterns = [
        [10, 6],
        [8, [10, 6]],
        "A636",
    ]
    linetype_pattern_names = [str(pattern) for pattern in linetype_patterns]
    linetype_ids = list(range(len(linetype_patterns)))
    return ggplot() + \
        geom_spoke(aes(y=linetype_ids), x=0, angle=0, radius=1, size=4, color="#fa9fb5", alpha=.25) + \
        geom_spoke(aes(y=linetype_ids, linetype=linetype_patterns), x=0, angle=0, radius=1, size=2, show_legend=False) + \
        geom_label(aes(y=linetype_ids, label=linetype_pattern_names), \
                   x=0, hjust=0, size=12, label_size=0, label_format="{}", position=position_nudge(y=.3), family='mono') + \
        scale_y_reverse() + \
        scale_linetype_identity() + \
        coord_cartesian(xlim=[0, 1], ylim=[-.5, len(linetype_patterns) - .75]) + \
        ggsize(800, 300) + \
        theme_void()
cl_plot = get_custom_linetype_plot()
ggsave(cl_plot, "aesthetics_custom_linetype.png")
cl_plot
cl_plot_dark = get_custom_linetype_plot() + docs_dark_theme()
ggsave(cl_plot_dark, "aesthetics_custom_linetype_dark.png")
cl_plot_dark