Skip to content

Custom Config

hover can be customized through its module config.

💡 Let's explore a few use cases.

This page assumes that you have know the basics

i.e. simple usage of dataset and annotator. Please visit the quickstart tutorial if you haven't done so.

Running Python right here

Think of this page as almost a Jupyter notebook. You can edit code and press Shift+Enter to execute.

Behind the scene is a Binder-hosted Python environment. Below is the status of the kernel:

To download a notebook file instead, visit here.

Color Palette for Labeled Data Points

You may want to customize the color palette for better contrast or accessibility, which can depend on specific scenarios.

The snippet below shows an example of default colors assigned to 6 classes. hover by default samples Turbo256 to accommodate a large number of classes while keeping good contrast.

import hover
from hover.utils.bokeh_helper import auto_label_color
from rich.console import Console

console = Console()
labels = ["A", "B", "C", "D", "E", "F"]
color_dict = auto_label_color(labels)
abstain = hover.config['data.values']['abstain_decoded']

for _label in [abstain, *labels]:
    console.print(f"\u2b24{_label}", style=color_dict[_label])

You can change the palette using any bokeh palette, or any iterable of hex colors like "#000000".

hover.config["visual"]["abstain_hexcolor"] = "#bababa"
Config changes should happen early

hover.config assignments need to happen before plotting your data.

  • This is because hover locks config values for consistency as soon as each config value is read by other code.
  • Ideally you should change config immediately after import hover.

Color of Unlabeled Data Points

For unlabeled data points, hover uses a light gray color "#dcdcdc". This is not configured in the color palette above, but here:

hover.config["visual"]["abstain_hexcolor"] = "#bababa"

Dimensionality Reduction Method

hover uses dimensionality reduction in a lot of places. It can be cumbersome to find these places and use your preferred method. In such cases a module-level override can be handy:

hover.config["data.embedding"]["default_reduction_method"] = "ivis"

Browse more configs

There are more configurations that are more niche which we will skip here. You can find a full list of configurations, default values, and hints here:

hover.config.hint()

Happy customizing!