{ "cells": [ { "cell_type": "markdown", "id": "95951f47-5a3a-4dc8-83ed-a5e868e310e8", "metadata": {}, "source": [ "# Preserving Data–Statistic Bijection in Lets-Plot\n", "\n", "Some statistical geometries in Lets-Plot (such as `geom_sina()`) generate their own statistical data, while still keeping a one-to-one correspondence with the original input data points.\n", "Previously, this correspondence was not preserved in the mapping: if you mapped an aesthetic (e.g., `color`) to a column from the original dataset, all points could end up with an aggregated value. \n", "\n", "Now, Lets-Plot preserves the **bijection between data and statistics** for such geometries. This means you can safely map aesthetics to variables from the original dataset, and they will be correctly aligned with the statistical output." ] }, { "cell_type": "code", "execution_count": 1, "id": "5d9b4c3f-05b0-49de-92db-bcef2275dbef", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "from lets_plot import *" ] }, { "cell_type": "code", "execution_count": 2, "id": "17d0c10a-a352-4e43-a2d2-7c2dc16bdf87", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "LetsPlot.setup_html()" ] }, { "cell_type": "code", "execution_count": 3, "id": "a7ed9215-c4dd-4bd1-a2cf-bdba66ae2291", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(234, 12)\n" ] }, { "data": { "text/html": [ "| \n", " | Unnamed: 0 | \n", "manufacturer | \n", "model | \n", "displ | \n", "year | \n", "cyl | \n", "trans | \n", "drv | \n", "cty | \n", "hwy | \n", "fl | \n", "class | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "1 | \n", "audi | \n", "a4 | \n", "1.8 | \n", "1999 | \n", "4 | \n", "auto(l5) | \n", "f | \n", "18 | \n", "29 | \n", "p | \n", "compact | \n", "
| 1 | \n", "2 | \n", "audi | \n", "a4 | \n", "1.8 | \n", "1999 | \n", "4 | \n", "manual(m5) | \n", "f | \n", "21 | \n", "29 | \n", "p | \n", "compact | \n", "
| 2 | \n", "3 | \n", "audi | \n", "a4 | \n", "2.0 | \n", "2008 | \n", "4 | \n", "manual(m6) | \n", "f | \n", "20 | \n", "31 | \n", "p | \n", "compact | \n", "
| 3 | \n", "4 | \n", "audi | \n", "a4 | \n", "2.0 | \n", "2008 | \n", "4 | \n", "auto(av) | \n", "f | \n", "21 | \n", "30 | \n", "p | \n", "compact | \n", "
| 4 | \n", "5 | \n", "audi | \n", "a4 | \n", "2.8 | \n", "1999 | \n", "6 | \n", "auto(l5) | \n", "f | \n", "16 | \n", "26 | \n", "p | \n", "compact | \n", "