{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using Text Formatters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can provide a function that takes a cells value as input and outputs a string to be displayed on the table. \n", "Some basic formatters are provided in plottable.formatters." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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WloqO3bskLCwMImIiJDLly9LVVWVPP/885KTkyPHjx+X77//XsaNGydOTk7X/NnX7Nmz5dlnnzXd/vjjjyUgIED2798vEyZMkCFDhthyalaTlpYmTk5O8t5778nhw4dl0qRJ4unpKSdPnhQRkdjYWElISLju/a/1jeH09HRxdHSU1atXS1FRkSQmJopWq5Wvv/7amlOxGWv0TOT3b/3fcccdsnLlSmuVbjf17Vl1dbXk5eVJXl6e+Pn5yYwZMyQvL0+KiopMY+Li4qR169amnz2lp6eLl5eXPPfcczafnzXUt2c//vijuLm5yZNPPimFhYWyefNm8fb2lpdffvm6j2HNb1kzkG9i/PjxEhgYKDqdTlq1aiUDBgxoMmEs8ntoBgUFiU6nE19fX4mPj5dz586JiMjFixdlxIgR4u/vLzqdTvz8/GT48OGSm5tb5zwHDx6UkJAQqaqqMu0zGAwyefJkcXd3l169epk9MTR2iYmJEhAQIDqdTnr37i179uwxHYuKipK4uLjr3vd64ZKcnCwhISGi1+slLCxMNm7caIXK7ccaPVu1apU4Ozub1mxTU5+elZWVCYA6W1RUlGnMb7/9JlOnTpWAgADR6/USFBQkc+bMkerqahvOyrrqu86++eYbiYiIECcnJwkKCpJXXnlFamtrr3t+awayRqQJ/RctREREjRQ/QyYiIlIAA5mIiEgBDGQiIiIFMJCJiIgUwEAmIiJSAAOZiIhIAQxkIiIiBTCQiYiIFMBAJiIiUgADmYiISAEMZCIiIgUwkImIiBTAQCYiIlIAA5mIiEgBDGQiIiIFMJCJiIgUwEAmIiJSAAOZiIhIAQxkIiIiBTCQiYiIFMBAJiIiUgADmYiISAEMZCIiIgUwkImIiBTAQCYiIlIAA5mIiEgBDrc6sLi42Jp1EBERNTkBAQHQ6XS3NJavkImIiBSgERGxdxFERER/dnyFTEREpAAGMhERkQIYyERERApgIBMRESmAgUxERKQABjIREZECGMhEREQKYCATEREpgIFMRESkAAYyERGRAhjIRERECmAgExERKYCBTEREpAAGMhERkQIYyERERApgIBMRESmAgUxERKQABjIREZECGMhEREQKYCATEREpgIFMRESkAAYyERGRAhjIRERECmAgExERKYCBXA+LFy+GRqPBtGnT7F2KRbRt2xYajabOFh8f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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "\n", "from plottable import Table\n", "\n", "from plottable import ColDef\n", "from plottable.formatters import decimal_to_percent\n", "\n", "d = pd.DataFrame(np.random.random((5, 5)), columns=[\"A\", \"B\", \"C\", \"D\", \"E\"]).round(2)\n", "fig, ax = plt.subplots(figsize=(6, 5))\n", "tab = Table(d, column_definitions=[ColDef(name=\"A\", formatter=decimal_to_percent)])\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Available formatters are:\n", "\n", "```python\n", "def decimal_to_percent(val: float) -> str: ...\n", " \"\"\"Formats Numbers to a string, replacing\n", " 0 with \"–\"\n", " 1 with \"✓\"\n", " values < 0.01 with \"<1%\" and\n", " values > 0.99 with \">99%\"\n", " \"\"\"\n", "\n", "\n", "def tickcross(val: Number | bool) -> str: ...\n", " \"\"\"formats a bool or (0, 1) value to a tick \"✔\" or cross \"✖\".\"\"\"\n", "\n", "\n", "def signed_integer(val: int) -> str: ...\n", " \"\"\"formats an integer to a string that includes the sign, ie. 1 to \"+1\".\"\"\"\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{seealso}\n", "The [Women's World Cup Example](../example_notebooks/wwc_example.ipynb) makes use of the decimal_to_percent formatter.\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating your own formatters\n", "\n", "It is very easy to create your own formatter functions. \n", "Let's take an easy example of rounding of values, for which we will use a lambda function:\n", "\n", "```python\n", "lambda x: round(x, 2)\n", "```\n", "\n", "You can also create more complex functions like the decimal_to_percent function above.\n", "\n", "```python\n", "def my_formatter(cell_content: Any) -> str | Number: ...\n", "```\n", "\n", "If you create any formatters that others would enjoy using, please consider sharing them by creating a Pull Request!" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAFICAYAAADAnk9nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1AUlEQVR4nO3ce3RU9bn/8c8QMolC5J6QIAkmXIIKyEXSgB68RAggQvVUUeEERWgx9KDWKl5YWEFAi7ci2hID6JEaFQNaoCDGBIqGRiGp3AwkXCycJPxEpVxqIsnz+8M6p2NAmZiZgdnv11p7LbLnu2ee7/dh73wyN5eZmQAAAOAYTYJdAAAAAAKLAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMA/JcrrrhCd911V4OP37t3r1wul0pKShqtJgAAAH8gAP5Lbm6uZsyYEewycAYpLCxUWFiYhg8fHuxS8C/jxo2Ty+XybG3atFF6ero+/vjjYJcGSZWVlfrlL3+pxMRERUREqGPHjhoxYoTy8vKCXZpj/fs5Ex4erpiYGF1zzTVauHCh6urqgl0eVP+69u2Wnp7u18clAP5L69atFRUVFewycAbJzs7WL3/5S61fv17/+7//G+xy8C/p6emqqKhQRUWF8vLy1LRpU1177bXBLsvx9u7dq759++q9997Tb3/7W23ZskWrV6/WlVdeqczMzGCX52jfnjN79+7Vn//8Z1155ZWaMmWKrr32Wp04cSLY5UHe17Vvt1dffdWvj0kA/Jd/fwm4U6dOmjVrlm6//XZFRUUpPj5eCxYs8BpfVFSk3r17KzIyUv369VNxcXG9+9y6dauGDh2q5s2bKyYmRmPHjtVnn30mSSooKJDb7dZf/vIXz/gnnnhC0dHRqqqq8t9EcVqOHj2q1157TZMmTdLw4cO1ePHiYJeEf4mIiFD79u3Vvn17XXLJJZo6dar+/ve/6//9v/8X7NIc7c4775TL5VJRUZFuuOEGde3aVRdddJHuuecebdy4MdjlOdq350yHDh3Up08fPfjgg3rrrbf05z//mWvbGeLfr2vfbq1atfLrYxIAT+HJJ5/0BLs777xTkyZNUmlpqaRvwsG1116rCy+8UJs2bdIjjzyie++91+v4L7/8UldddZV69+6tjz76SKtXr1ZVVZVuvPFGSf8XOMeOHavDhw+ruLhY06ZN04svvqiYmJiAzxfeXn/9dSUnJ6tbt24aM2aMFi5cKDMLdln4jqNHj+qVV15R586d1aZNm2CX41iff/65Vq9erczMTDVr1qze7S1btgx8UfheV111lXr16qXc3Nxgl4IgIQCewrBhw3TnnXeqc+fOuv/++9W2bVvl5+dLkv74xz+qrq5O2dnZuuiii3Tttdfq17/+tdfxzz33nHr37q1Zs2YpOTlZvXv31sKFC5Wfn6+dO3dKkmbOnKlWrVpp4sSJGjNmjDIyMnTdddcFfK6oLzs7W2PGjJH0zVPzhw8f1rp164JcFSRpxYoVat68uZo3b66oqCi9/fbbeu2119SkCZezYCkrK5OZKTk5OdilwAfJycnau3dvsMuAvK9r326zZs3y62M29eu9n8V69uzp+bfL5VL79u118OBBSdKOHTvUs2dPRUZGesakpqZ6Hf+3v/1N+fn5at68eb37Li8vV9euXeV2u7VkyRL17NlTCQkJevrpp/00G/iitLRURUVFWrZsmSSpadOmuummm5Sdna0rrrgiuMVBV155pV544QVJ0hdffKHnn39eQ4cOVVFRkRISEoJcnTPx7PjZyczkcrmCXQbkfV37VuvWrf36mATAUwgPD/f62eVy+fSJqaNHj2rEiBF6/PHH690WGxvr+fcHH3wg6ZuXUD7//POTvnyCwMrOztaJEycUFxfn2WdmioiI0HPPPacWLVoEsTo0a9ZMnTt39vz84osvqkWLFsrKytLMmTODWJlzdenSRS6XS5988kmwS4EPduzYoQsuuCDYZUD1r2uBwGsmDdC9e3d9/PHH+uqrrzz7vvsm5z59+mjbtm3q1KmTOnfu7LV9G/LKy8t19913KysrSykpKcrIyOBj+UF24sQJvfzyy3ryySdVUlLi2f72t78pLi7O75/Kgu9cLpeaNGmif/7zn8EuxbFat26tIUOGaP78+Tp27Fi927/88svAF4Xv9d5772nLli264YYb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nPL+AxkAXWa8QxcAAMBJeA8gAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIdperoDy8rK/FkHAAAAGiA+Pl5ut9unY3gGEAAAwGFcZmbBLgIAAACBwzOAAAAADkMABAAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMADKLZs2fr0ksvVVRUlKKjozVq1CiVlpYGu6yQs379eo0YMUJxcXFyuVxavnz5Dx5TUFCgPn36KCIiQp07d9bixYv9Xmeomj9/vjp16qTIyEilpKSoqKjolGOvuOIKuVyuetvw4cM9Y8aNG1fv9vT09EBMJaT40pevv/5ajz76qJKSkhQZGalevXpp9erVXmM6dep00t5lZmb6eyohx5fe5Obmql+/fmrZsqWaNWumSy65RP/zP/9Tb8zgwYPVpk0buVwulZSU+HkGocuX3kjSM888o27duumcc85Rx44ddffdd+urr77yGnPgwAGNGTNGbdq00TnnnKMePXroo48+8uc0vmEImiFDhtiiRYts69atVlJSYsOGDbP4+Hg7evRosEsLKatWrbKHHnrIcnNzTZItW7bse8fv3r3bzj33XLvnnnts+/btNm/ePAsLC7PVq1cHpuAQkpOTY2632xYuXGjbtm2zCRMmWMuWLa2qquqk4w8dOmQVFRWebevWrRYWFmaLFi3yjMnIyLD09HSvcZ9//nmAZhQafO3LfffdZ3FxcbZy5UorLy+3559/3iIjI23z5s2eMQcPHvTqydq1a02S5efnB2hWocHX3uTn51tubq5t377dysrK7Jlnnql3vXr55ZftN7/5jWVlZZkkKy4uDtBsQouvvVmyZIlFRETYkiVLbM+ePbZmzRqLjY21u+++2zPm888/t4SEBBs3bpz99a9/td27d9uaNWusrKzM7/MhAJ5BDh48aJJs3bp1wS4lZJ1OALzvvvvsoosu8tp300032ZAhQ/xYWWjq37+/ZWZmen6ura21uLg4mz179mkd//TTT1tUVJTXH0UZGRk2cuTIxi7VUXztS2xsrD333HNe+66//nq79dZbT/kYU6ZMsaSkJKurq2ucoh3ix54zZma9e/e2hx9+uN7+PXv2EAB/BF97k5mZaVdddZXXvnvuuccGDhzo+fn++++3yy67zD8F/wBeAj6DHD58WJLUunXrIFfibIWFhUpLS/PaN2TIEBUWFgaporNTTU2NNm3a5LWWTZo0UVpa2mmvZXZ2tkaPHq1mzZp57S8oKFB0dLS6deumSZMm6dChQ41aeyhrSF+qq6sVGRnpte+cc87Rhg0bTvkYr7zyim6//Xa5XK7GKz7E/dhzxsyUl5en0tJS/cd//Ic/S3WchvRmwIAB2rRpk+dl4t27d2vVqlUaNmyYZ8zbb7+tfv366Wc/+5mio6PVu3dvZWVl+Xcy39YfkEfBD6qrq9Ndd92lgQMH6uKLLw52OY5WWVmpmJgYr30xMTH6xz/+oX/+859Bqurs89lnn6m2tvaka1lZWfmDxxcVFWnr1q264447vPanp6fr5ZdfVl5enh5//HGtW7dOQ4cOVW1tbaPWH6oa0pchQ4boqaee0q5du1RXV6e1a9cqNzdXFRUVJx2/fPlyffnllxo3blxjlx/SGnrOHD58WM2bN5fb7dbw4cM1b948XXPNNf4u11Ea0ptbbrlFjz76qC677DKFh4crKSlJV1xxhR588EHPmN27d+uFF15Qly5dtGbNGk2aNEn//d//rZdeesmv85Gkpn5/BJyWzMxMbd269ZR/UQNOk52drR49eqh///5e+0ePHu35d48ePdSzZ08lJSWpoKBAV199daDLdIRnn31WEyZMUHJyslwul5KSknTbbbdp4cKFJx2fnZ2toUOHKi4uLsCVOlNUVJRKSkp09OhR5eXl6Z577lFiYqKuuOKKYJfmaAUFBZo1a5aef/55paSkqKysTFOmTNGMGTM0bdo0Sd88+dOvXz/NmjVLktS7d29t3bpVv//975WRkeHX+ngG8AwwefJkrVixQvn5+Tr//PODXY7jtW/fXlVVVV77qqqqdN555+mcc84JUlVnn7Zt2yosLOyka9m+ffvvPfbYsWPKycnR+PHjf/BxEhMT1bZtW5WVlf2oep2iIX1p166dli9frmPHjmnfvn365JNP1Lx5cyUmJtYbu2/fPr377rv1nrnFD2voOdOkSRN17txZl1xyiX71q1/pP//zPzV79mx/l+soDenNtGnTNHbsWN1xxx3q0aOHfvrTn2rWrFmaPXu26urqJEmxsbG68MILvY7r3r27Pv30U/9M5N8QAIPIzDR58mQtW7ZM7733ni644IJglwRJqampysvL89q3du1apaamBqmis5Pb7Vbfvn291rKurk55eXk/uJZvvPGGqqurNWbMmB98nP379+vQoUOKjY390TU7wY/pS2RkpDp06KATJ07ozTff1MiRI+uNWbRokaKjo72+ugen58f05t/V1dWpurraHyU6VkN6c/z4cTVp4h2zwsLCJH3z+1+SBg4cWO/r33bu3KmEhITGLP/kgvLRE5iZ2aRJk6xFixZWUFDg9fUJx48fD3ZpIeXIkSNWXFxsxcXFJsmeeuopKy4utn379pmZ2dSpU23s2LGe8d9+Dcyvf/1r27Fjh82fP5+vgWmgnJwci4iIsMWLF9v27dtt4sSJ1rJlS6usrDQzs7Fjx9rUqVPrHXfZZZfZTTfdVG//kSNH7N5777XCwkLbs2ePvfvuu9anTx/r0qWLffXVV36fT6jwtS8bN260N99808rLy239+vV21VVX2QUXXGBffPGF1/3W1tZafHy83X///YGcTkjxtTezZs2yd955x8rLy2379u02d+5ca9q0qWVlZXnGHDp0yIqLi23lypUmyXJycqy4uNgqKioCPr+zma+9mT59ukVFRdmrr75qu3fvtnfeeceSkpLsxhtv9IwpKiqypk2b2mOPPWa7du2yJUuW2LnnnmuvvPKK3+dDAAwiSSfd/v07z/Dj5efnn3SdMzIyzOybrxUZNGhQvWMuueQSc7vdlpiYSE9+hHnz5ll8fLy53W7r37+/bdy40XPboEGDPH341ieffGKS7J133ql3X8ePH7fBgwdbu3btLDw83BISEmzChAmeCzBOny99KSgosO7du1tERIS1adPGxo4dawcOHKh3n2vWrDFJVlpaGogphCxfevPQQw9Z586dLTIy0lq1amWpqamWk5PjdX+LFi066TVw+vTpAZpR6PClN19//bU98sgjlpSUZJGRkdaxY0e788476/3h9Kc//ckuvvhii4iIsOTkZFuwYEFA5uIy+9fzkAAAAHAE3gMIAADgMARAAAAAhyEAAgAAOAwBEAAAwGEIgAAA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WW63W5MnT9Ztt92mJk1O/us9MzNTW7duVU5OToArdZ7T6c3rr7+uJUuW6I9//KM2b96sl156SXPnztVLL73k9/p4BjCINm3apIMHD6pPnz6efbW1tVq/fr2ee+45VVdX84xGI2jbtq3CwsJUVVXltb+qqkrt27evN768vFx79+7ViBEjPPvq6uokSU2bNlVpaamSkpL8W3QICNS6JyYmqm3btiorK9PVV1/dyLMIPb72RZKmTZumsWPH6o477pAk9ejRQ8eOHdPEiRP10EMPnTJswDcN6U27du20fPlyffXVVzp06JDi4uI0depUJSYm1hs7efJkrVixQuvXr9f555/vlzmEKn/15te//rWmTp2q0aNHS/rm3Nq3b59mz56tjIwM/01IPAMYVFdffbW2bNmikpISz9avXz/deuutKikpIfw1Erfbrb59+yovL8+zr66uTnl5eUpNTa03Pjk5uV5frrvuOl155ZUqKSlRx44dA1n+WStQ675//34dOnRIsbGxfptLKPG1L5J0/PjxeiHv2+uTBeLrKhyiIb35VmRkpDp06KATJ07ozTff1MiRIz23mZkmT56sZcuW6b333tMFF1zgtzmEKn/15lTn1rd//PqV3z9mAp/wKWD/yMnJsYiICFu8eLFt377dJk6caC1btrTKykozMxs7dqxNnTr1lMfzydOGaex1P3LkiN17771WWFhoe/bssXfffdf69OljXbp0sa+++srf0wkZvvZl+vTpFhUVZa+++qrt3r3b3nnnHUtKSrIbb7zRM+bIkSNWXFxsxcXFJsmeeuopKy4utn379gV8fmczX3uzceNGe/PNN628vNzWr19vV111lV1wwQX2xRdfeMZMmjTJWrRoYQUFBV5fn3T8+PFAT++s5o/eZGRkWIcOHTxfA5Obm2tt27a1++67z+/zIQCeYQiA/jNv3jyLj483t9tt/fv3t40bN3puGzRokGVkZJzyWAJgwzXmuh8/ftwGDx5s7dq1s/DwcEtISLAJEyZ4LsA4fb705euvv7ZHHnnEkpKSLDIy0jp27Gh33nmn1y+y/Px8k1Rv+77+4uR86U1BQYF1797dIiIirE2bNjZ27Fg7cOCA1/2drC+SbNGiRQGaUeho7N784x//sClTplh8fLxFRkZaYmKiPfTQQ1ZdXe33ubjMeP4eAADASXgPIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcBgCIAAAgMMQAAEAAByGAAgAAOAwBEAAAACHIQACAAA4DAEQAADAYQiAAAAADkMABAAAcJj/D018DgeGUAzhAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "d = pd.DataFrame(np.random.random((5, 5)), columns=[\"A\", \"B\", \"C\", \"D\", \"E\"]).round(2)\n", "fig, ax = plt.subplots(figsize=(8, 4))\n", "tab = Table(d, column_definitions=[ColDef(name=\"A\", formatter=lambda x: round(x, 1))])\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Builtin String Formatters\n", "\n", "To perform common string formatting tasks, the best option is to use builtin formatter syntax.\n", "\n", "Formatting digits reference\n", "source: https://www.pythoncheatsheet.org/cheatsheet/string-formatting\n", "\n", " number format output description\n", " ------ ------ ------ -----------\n", " 3.1415926 {:.2f} 3.14 Format float 2 decimal places\n", " 3.1415926 {:+.2f} +3.14 Format float 2 decimal places with sign\n", " -1 {:+.2f} -1.00 Format float 2 decimal places with sign\n", " 2.71828 {:.0f} 3 Format float with no decimal places\n", " 4 {:0>2d} 04 Pad number with zeros (left padding, width 2)\n", " 4 {:x<4d} 4xxx Pad number with x’s (right padding, width 4)\n", " 10 {:x<4d} 10xx\t Pad number with x’s (right padding, width 4)\n", " 1000000 {:,} 1,000,000 Number format with comma separator\n", " 0.35 {:.2%} 35.00% Format percentage\n", " 1000000000 {:.2e} 1.00e+09 Exponent notation\n", " 11 {:11d} 11 Right-aligned (default, width 10)\n", " 11 {:<11d} 11 Left-aligned (width 10)\n", " 11 {:^11d} 11 Center aligned (width 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can provide the format string to a ColumnDefinitions `formatter` argument just as a Callable:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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ERGRzmEASERERKRjGAASERER6RgGgEREREQ6hgEgERERkY5hAEhERESkYxgAEhEREekYBoBEREREOoYBIBEREZGOYQBIREREpGMYABIRERHpGAaARERERDqGASARERGRjmEASERERKRjGAASERER6RgGgEREREQ6hgEgERERkY5hAEhERESkY/TLWjA1NbUq20FEREREFWBvbw+1Wl2ubTgDSERERKRjVCIi1d0IIiIiInp2OANIREREpGMYABIRERHpGAaARERERDqGASARERGRjmEASERERKRjGAASERER6RgGgEREREQ6hgEgERERkY5hAEhERESkYxgAEhEREekYBoBEREREOoYBIBEREZGOYQBIREREpGMYABIRERHpGAaARERERDqGASARERGRjmEASERERKRjGABWowMHDqB3796ws7ODSqXCtm3bqrtJtdaKFSvg6OgIIyMjdOzYEcePHy+xbFJSEt588004OjpCpVJhyZIlRcqsXLkSbdq0gZmZGczMzODt7Y3ffvutCntQs82bNw8dOnRAvXr1YGNjg759+yI5OVnJv3DhAlQqVbGvn3/+udg6CwoKMGXKFLi7u8PU1BR2dnYYPnw4rl69qpTJy8tDYGAgzMzM0KJFC0RERGjVsXDhQrz//vtV0+kq9qQxLU7Xrl2LHeNevXopZUaMGFEk39/fv1La/KTP2ffff4+uXbvCzMwMKpUKt2/frpT91ibluRYVFBRg9uzZcHZ2hpGRETw8PLB7926tMnfu3MGHH34IBwcHGBsbo1OnTjhx4oRWmbCwMPj6+qJBgwZQqVSIi4vTyr958ybef/99uLq6wtjYGPb29vjggw+QlZVVaf2uDcpzbMLCwvDiiy/CwsICpqamaNu2LdavX19i+XfffbfY75NTp06he/fusLCwQIMGDTB27FhkZ2drlSnuMx0aGvpUfS0LBoDV6O7du/Dw8MCKFSuquym12qZNm/Dxxx9j5syZOHXqFDw8PODn54fMzMxiy+fk5MDJyQnz589Ho0aNii3TpEkTzJ8/HzExMTh58iRef/11BAQEICkpqSq7UmPt378fwcHBOHr0KPbu3YuCggL4+vri7t27AICmTZsiIyND6/X555+jbt266NGjR7F15uTk4NSpU5gxYwZOnTqFsLAwJCcno0+fPkqZ77//HjExMYiOjsbYsWMx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kbS0NDlz5owsWrRI9PX1ZfXq1SXuo7hVJZYtWyYxMTGSnJwsy5cvF2NjY1m6dKmSv2PHDlm9erUkJiZKSkqKfPvtt2JiYiKfffZZ5Q5AMRgAVqOHSyU8/goKCqruptU6y5YtE3t7e1Gr1eLl5SVHjx5V8rp06aI1pg+XSnj81aVLF6XMqFGjxMHBQdRqtVhbW0u3bt10NvgTkWLHC4CEhIRolZs2bZo0bdpUa9mDx+t5uE1JxwGAREZGam2XmJgoLi4uWsudaDQaGTdunJiZmUmHDh20AvjaoCxj+vi5KyLyxx9/CIBiz8ecnBzx9fUVa2trMTAwEAcHBxkzZoxWkCbyIFAbPny4WFlZiaGhoTg5OcmYMWMkKyur1DaX9jkTEZk5c2aZzpPnWXmuRVFRUeLm5iaGhobSoEEDCQwMlCtXrmjVt2nTJnFychK1Wi2NGjWS4OBguX37tlaZkJCQYsd95syZIlLydw2AJy7/8zwpz7GZPn26uLi4iJGRkdSvX1+8vb0lNDS01PqLCwADAwPF0tJS1Gq1tGnTRn766Set/N9++03atm0rdevWFVNTU/Hw8JDvvvuuxGtoZVKJPINnjYmIiIioxuA9gEREREQ6hgEgERERkY5hAEhERESkYxgAEhEREekYBoBEREREOoYBIBEREZGOYQBIREREpGMYABIRERHpGAaARERERDqGASARERGRjmEASERERKRjGAASERER6RgGgEREREQ6hgEgERERkY5hAEhERESkYxgAEhEREekYBoBEREREOoYBIBEREZGOYQBIREREpGMYABIRERHpGP2yFkxNTa3KdhARERFRBdjb20OtVpdrG84AEhEREekYlYhIdTeCiIiIiJ4dzgASERER6RgGgEREREQ6hgEgERERkY5hAEhERESkYxgAEhEREekYBoBEREREOoYBIBEREZGOYQBIREREpGMYABIRERHpGAaARERERDqGASARERGRjmEASERERKRjGAASERER6RgGgEREREQ6hgEgERERkY5hAEhERESkYxgAEhEREekYBoDVaN68eejQoQPq1asHGxsb9O3bF8nJydXdrFppxYoVcHR0hJGRETp27Ijjx4+XWv727dsIDg6Gra0tDA0N0aJFC/z6669K/oEDB9C7d2/Y2dlBpVJh27ZtVdyDmm3WrFlQqVRar5YtWyr5//rX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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "d = pd.DataFrame(np.random.random((5, 5)), columns=[\"A\", \"B\", \"C\", \"D\", \"E\"]).round(4)\n", "fig, ax = plt.subplots(figsize=(8, 4))\n", "tab = Table(d, column_definitions=[ColDef(name=\"A\", title=\"2 Decimals\", formatter=\"{:.2f}\"), \n", " ColDef(name=\"B\", title=\"Percentage\", formatter=\"{:.1%}\"),\n", " ColDef(name=\"C\", title=\"Exponent\\nNotation\", formatter=\"{:.2e}\")])\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.5 ('env': venv)", "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.10.5" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "fad163352f6b6c4f05b9b8d41b1f28c58b235e61ec56c8581176f01128143b49" } } }, "nbformat": 4, "nbformat_minor": 2 }