{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "aed85edd-713f-43c6-a1ee-6d07b31192fe", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "from lets_plot import *" ] }, { "cell_type": "code", "execution_count": 2, "id": "cdf544b2-0af6-42c4-b10a-629cd5b36aa3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "LetsPlot.setup_html()" ] }, { "cell_type": "markdown", "id": "a6348b82-1288-4509-8910-f54ab4fc6dde", "metadata": {}, "source": [ "# Function `parallel_coordinates_plot()`" ] }, { "cell_type": "code", "execution_count": 3, "id": "7ba8c32f-7dd4-4c4c-8555-232db94027f5", "metadata": {}, "outputs": [], "source": [ "def parallel_coordinates_plot(df: pd.DataFrame, class_column_name, order=None):\n", " plot_df = df.copy()\n", " plot_df.insert(0, 'par_plot_idx', list(range(df.shape[0])))\n", "\n", " var_names = df.columns.tolist()\n", " var_names.remove(class_column_name)\n", "\n", " plot_df = plot_df.melt(\n", " id_vars=[class_column_name, 'par_plot_idx'],\n", " value_vars= var_names\n", " )\n", " \n", " p = ggplot(plot_df, aes(x='variable', y='value', color=class_column_name, group='par_plot_idx')) \\\n", " + geom_line(size=1)\n", "\n", " if order is not None:\n", " p += scale_x_discrete(breaks=order)\n", " \n", " return p" ] }, { "cell_type": "markdown", "id": "74a882f8-c3e8-448f-8ed1-c326e7458517", "metadata": {}, "source": [ "# Demo" ] }, { "cell_type": "code", "execution_count": 4, "id": "7311ac4d-5018-4f1e-a84a-7113f025eddd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | sepal_length | \n", "sepal_width | \n", "petal_length | \n", "petal_width | \n", "species | \n", "
|---|---|---|---|---|---|
| 0 | \n", "5.1 | \n", "3.5 | \n", "1.4 | \n", "0.2 | \n", "setosa | \n", "
| 1 | \n", "4.9 | \n", "3.0 | \n", "1.4 | \n", "0.2 | \n", "setosa | \n", "
| 2 | \n", "4.7 | \n", "3.2 | \n", "1.3 | \n", "0.2 | \n", "setosa | \n", "
| 3 | \n", "4.6 | \n", "3.1 | \n", "1.5 | \n", "0.2 | \n", "setosa | \n", "
| 4 | \n", "5.0 | \n", "3.6 | \n", "1.4 | \n", "0.2 | \n", "setosa | \n", "