Basic Line Chart

data = pd.DataFrame({"x": range(10), "y": np.random.randn(10).cumsum()})
chart = go.Chart(data).map(x="x", y="y").geom("line")
            

Matrix Grid Chart

df = pd.DataFrame(
    {
        "Category": ["A", "A", "B", "B", "C", "C"],
        "Subgroup": ["X", "Y", "X", "Y", "X", "Z"],
        "Binary": [True, False, True, False, True, False],
        "Value": [10, 15, 20, 25, 30, 35],
    }
)
df_small = pd.DataFrame(
    {
        "Category": ["A", "B", "B", "C"],
        "Subgroup": ["X", "X", "Y", "Z"],
        "Binary": [True, True, True, False],
        "Value": [10, 14, 20, 30],
    }
)
df["Value_string"] = df["Value"].astype(str)
df_small["Value_string"] = df["Category"].astype(str)

gochart = (
    go.Chart(df)
    .map(x="Category", y="Value", color="Subgroup")
    .geom("bar")
    .geom(
        "line",
        data=df_small,
        map={
            "tooltip": "Subgroup",
            "x": "Category",
            "y": "Value",
            "color": "Subgroup",
        },
    )
    .matrix(col="Subgroup", row="Binary")
)
return gochart
            

Styled Line Chart

df = pd.DataFrame(
    {
        "Category": ["A", "A", "B", "B", "C", "C"],
        "Subgroup": ["X", "Y", "X", "Y", "X", "Z"],
        "Binary": [True, False, True, False, True, False],
        "Value": [10, 15, 20, 25, 30, 35],
    }
)

df_small = pd.DataFrame(
    {
        "Category": ["A", "B", "B", "C"],
        "Subgroup": ["X", "X", "Y", "Z"],
        "Binary": [True, True, True, False],
        "Value": [10, 14, 20, 30],
    }
)

df["Value_string"] = df["Value"].astype(str)
df_small["Value_string"] = df["Category"].astype(str)

guillaume_style = (
    go.Theme()
    .axis.label(color="#aa3333")
    .facet.box(r=5, fill="#ffddff", stroke="#aa3333", lineWidth=2)
    .facet.label.col(color="#aa3333")
    .grid.facet.spacing(cols=10, rows=7)
    .grid.margin(left=15, bottom=20)
)

gochart = (
    go.Chart(df)
    .map(x="Category", y="Value", color="Subgroup")
    .geom("bar")
    .geom(
        "line",
        data=df_small,
        map={
            "tooltip": "Subgroup",
            "x": "Category",
            "y": "Value",
            "color": "Subgroup",
        },
    )
    .facet(col="Subgroup", row="Binary")
    .theme(guillaume_style)
    .title(title="Bar Chart with Facets")
)
return gochart
            

Basic Line Chart

data = pd.DataFrame({"x": range(10), "y": np.random.randn(10).cumsum()})
chart = go.Chart(data).title("Basic Line Chart").map(x="x", y="y").geom("line")
            

Multi-Series Line Chart

data = pd.DataFrame(
    {
        "x": list(range(10)) * 3,
        "y": np.random.randn(30).cumsum(),
        "series": ["A"] * 10 + ["B"] * 10 + ["C"] * 10,
    }
)
chart = go.Chart(data).map(x="x", y="y", color="series").geom("line")
            

Line with Points

data = pd.DataFrame({"x": range(10), "y": np.random.randn(10).cumsum()})
chart = go.Chart(data).map(x="x", y="y").geom("line").geom("point")
            

Vertical Bar Chart

data = pd.DataFrame(
    {"category": ["A", "B", "C", "D", "E"], "value": [23, 45, 12, 67, 34]}
)
chart = go.Chart(data).map(x="category", y="value").geom("bar")
            

Horizontal Bar Chart

data = pd.DataFrame(
    {"category": ["A", "B", "C", "D", "E"], "value": [23, 45, 12, 67, 34]}
)
chart = go.Chart(data).map(x="value", y="category").geom("bar")
            

Grouped Bar Chart

data = pd.DataFrame(
    {
        "category": ["A", "A", "B", "B", "C", "C"],
        "group": ["X", "Y"] * 3,
        "value": [10, 15, 20, 25, 30, 35],
    }
)
chart = go.Chart(data).map(x="category", y="value", color="group").geom("bar")
            

Basic Scatter Plot

data = pd.DataFrame({"x": np.random.randn(50), "y": np.random.randn(50)})
chart = go.Chart(data).map(x="x", y="y").geom("point")
            

Colored Scatter Plot

data = pd.DataFrame(
    {
        "x": np.random.randn(50),
        "y": np.random.randn(50),
        "group": np.random.choice(["A", "B", "C"], 50),
    }
)
chart = go.Chart(data).map(x="x", y="y", color="group").geom("point")
            

Bubble Chart

data = pd.DataFrame(
    {
        "x": np.random.randn(30),
        "y": np.random.randn(30),
        "size": np.random.randint(10, 100, 30),
    }
)
chart = go.Chart(data).map(x="x", y="y", size="size").geom("point")
            

Correlation Heatmap

# Create correlation matrix data
vars = ["A", "B", "C", "D", "E"]
data = pd.DataFrame(
    {
        "x": vars * 5,
        "y": [v for v in vars for _ in range(5)],
        "value": np.random.rand(25),
    }
)
chart = go.Chart(data).map(x="x", y="y", z="value").geom("tile")
            

Activity Heatmap

days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
hours = [f"{h}:00" for h in range(24)]
data = pd.DataFrame(
    {
        "day": days * 24,
        "hour": [h for h in hours for _ in range(7)],
        "activity": np.random.randint(0, 100, 168),
    }
)
chart = go.Chart(data).map(x="hour", y="day", z="activity").geom("tile")
            

Facet by Column

data = pd.DataFrame(
    {
        "x": list(range(10)) * 3,
        "y": np.random.randn(30),
        "group": ["A"] * 10 + ["B"] * 10 + ["C"] * 10,
    }
)
chart = go.Chart(data).map(x="x", y="y").geom("line").facet(col="group")
            

Facet by Row

data = pd.DataFrame(
    {
        "x": list(range(10)) * 3,
        "y": np.random.randn(30),
        "group": ["A"] * 10 + ["B"] * 10 + ["C"] * 10,
    }
)
chart = go.Chart(data).map(x="x", y="y").geom("line").facet(row="group")
            

Facet Grid

data = pd.DataFrame(
    {
        "x": list(range(10)) * 6,
        "y": np.random.randn(60),
        "row_var": (["R1"] * 10 + ["R2"] * 10) * 3,
        "col_var": ["C1"] * 20 + ["C2"] * 20 + ["C3"] * 20,
    }
)
chart = (
    go.Chart(data)
    .map(x="x", y="y")
    .geom("point")
    .facet(row="row_var", col="col_var")
)
            

Scatter with Trend Line

x = np.linspace(0, 10, 30)
y = 2 * x + np.random.randn(30) * 2
data = pd.DataFrame({"x": x, "y": y})

# Trend line (use float to match data types)
trend = pd.DataFrame({"x": [0.0, 10.0], "y": [0.0, 20.0]})

chart = go.Chart(data).map(x="x", y="y").geom("point").geom("line", data=trend)
            

Homepage Example

# Sample sales data
data = pd.DataFrame(
    {
        "month": ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] * 2,
        "sales": [120, 150, 180, 220, 280, 350, 80, 110, 130, 170, 210, 290],
        "region": ["North"] * 6 + ["South"] * 6,
    }
)

chart = go.Chart(data).map(x="month", y="sales", color="region").geom("bar")