Point mark

An interactive point chart with a quantitative color channel and a smooth relationship generated by GenomeSpy transforms.

Code

"""Point mark.

An interactive point chart with a quantitative color channel and a smooth
relationship generated by GenomeSpy transforms.
"""

import genome_spy as gs
from genome_spy.datasets._grammar import sincos_data


# Load example positions along the horizontal axis.
data = sincos_data()

# Calculate a sine wave for point height and a cosine wave for color.
chart = (
    gs.Chart(data)
    .transform_calculate(
        sin=gs.expr.sin(gs.datum.x / 4),
        cos=gs.expr.cos(gs.datum.x / 5),
    )
    # Use partly transparent circles so overlapping points remain visible.
    .mark_point(size=60, filled=True, opacity=0.75)
    .encode(
        x=gs.X("x:Q").scale(zoom=True).title("Position"),
        y=gs.Y("sin:Q").scale(zoom=True).title("sin(x / 4)"),
        color=gs.Color("cos:Q").title("cos(x / 5)"),
    )
    .properties(title="Point mark")
)