Link Multiple Scatter Plots 
There are many use cases where one wants to create two or more scatter plot and potentially link the view, selection, and hover state.
For instance, we might want to
- visualize different properties of a dataset
 - compare different facets of a dataset
 - compare different embedding methods of a dataset
 - compare multiple datasets with shared labels
 
Jupyter Scatter can help with this by composing and linking multiple scatter instances.
Simplest Example 
We'll start out with a very simple example to get familiar with the API.
In the following, we'll compose two scatter plots next to each other using compose().
import jscatter
import numpy as np
x, y = np.random.rand(500), np.random.rand(500)
a, b = jscatter.Scatter(x=x, y=y), jscatter.Scatter(x=x, y=y)
jscatter.compose([a, b])By default, jscatter arranges scatter plots into a single row but we can customize this of course.
jscatter.compose([a, b], rows=2)We can also change the row height as follows to shrink or grow the plots.
jscatter.compose([a, b], rows=2, row_height=240)Synchronize View, Selection, & Hover 
So good so far but the fun part starts when we link/synchronize the scatter plots' views and selections.
jscatter.compose(
    [a, b],
    sync_view=True,
    sync_selection=True,
    sync_hover=True,
)Since a common use case is to synchronize everything, jscatter offers the shorthand method link():
jscatter.link([a, b])The result is the same as the previous compose() call.