{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from scipy import stats\n",
    "from ipywidgets import interact, interact_manual\n",
    "import altair as alt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "diamanti = pd.read_csv(\"diamonds.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fsp=alt.Chart(diamanti).interactive().mark_point().encode(x='carat',y='price')\n",
    "fsp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "alt.data_transformers.disable_max_rows()\n",
    "fsp=alt.Chart(diamanti).interactive().mark_point(filled=True, size=10).encode(x='carat',y='price')\n",
    "fsp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "r=alt.Chart(diamanti).mark_rect().encode(\n",
    "    x=alt.X('carat', bin=alt.Bin(maxbins=40)),\n",
    "    y=alt.Y('price', bin=alt.Bin(maxbins=40)),\n",
    "    color=alt.Color('count()', scale=alt.Scale(scheme='greenblue')))\n",
    "r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "r=alt.Chart(diamanti).mark_rect().encode(\n",
    "    x=alt.X('carat', bin=alt.Bin(maxbins=40)),\n",
    "    y=alt.Y('price', bin=alt.Bin(maxbins=40)),\n",
    "    color=alt.Color('count()', scale=alt.Scale(scheme='greenblue', type='log')))\n",
    "r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "per_taglio=alt.Chart(diamanti).interactive().mark_point(filled=True, size=10).encode(\n",
    "    x='carat',y='price', color='cut')\n",
    "per_taglio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "facet_taglio=alt.Chart(diamanti, width=200, height=150).interactive().mark_point(filled=True, size=10).encode(\n",
    "    x='carat',y='price', facet=alt.Facet('cut', columns=3))\n",
    "facet_taglio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "slope, intercept, *rest = stats.linregress(diamanti.carat, diamanti.price)\n",
    "x=np.arange(0,5,1)\n",
    "y=x*slope+intercept\n",
    "regr=alt.Chart(pd.DataFrame({'x':x, 'y':y})).mark_line().encode(x='x', y='y')\n",
    "regr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "r=alt.Chart(diamanti).mark_rect().encode(\n",
    "    x=alt.X('carat', bin=alt.Bin(maxbins=40)),\n",
    "    y=alt.Y('price', bin=alt.Bin(maxbins=40)),\n",
    "    color=alt.Color('count()', scale=alt.Scale(scheme='greenblue', type='log')))\n",
    "r+regr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "regr=alt.Chart(pd.DataFrame({'x':x, 'y':y})).mark_line(clip=True, color='red').encode(\n",
    "    x='x', \n",
    "    y=alt.Y('y').scale(domain=[min(diamanti['price']), max(diamanti['price'])]))\n",
    "r=alt.Chart(diamanti).mark_rect().encode(\n",
    "    x=alt.X('carat', bin=alt.Bin(maxbins=40)),\n",
    "    y=alt.Y('price', bin=alt.Bin(maxbins=40)),\n",
    "    color=alt.Color('count()', scale=alt.Scale(scheme='greenblue', type='log')))\n",
    "r+regr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "regr.transform?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
