{ "cells": [ { "cell_type": "markdown", "id": "e3609845", "metadata": {}, "source": [ "# Positioning annotations with plotnine\n", "\n", "Drawing annotations with `aes(label='colname')` and `geom_text()` can be simple, but positioning them well can be more difficult!" ] }, { "cell_type": "code", "execution_count": 24, "id": "f481ba5c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameamountprice
0seashells6514
1sand4034
2barnacles2377
\n", "
" ], "text/plain": [ " name amount price\n", "0 seashells 65 14\n", "1 sand 40 34\n", "2 barnacles 23 77" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "from plotnine import *\n", "\n", "df = pd.DataFrame([\n", " { 'name': 'seashells', 'amount': 65, 'price': 14 },\n", " { 'name': 'sand', 'amount': 40, 'price': 34 },\n", " { 'name': 'barnacles', 'amount': 23, 'price': 77 }\n", "])\n", "df" ] }, { "cell_type": "markdown", "id": "18e12607", "metadata": {}, "source": [ "## The problem\n", "\n", "By default, your text annotations are centered on the same points that they are annotating" ] }, { "cell_type": "code", "execution_count": 25, "id": "27fbb81e", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGuCAYAAABY0OakAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1J0lEQVR4nO3de1iUdf7/8dc4MCMHBzEEh5SDqZkrmaauhaLbppWWZp5N7aCJqRmulWlSHje3rPVUSWZZlqJl7a/S3c5a2ibu2sG8NLcCrGBVDAVRBIb790fXzjfCEhEcPsPzcV172dxzz2fe97yWi9d138OMzbIsSwAAAIZo4OsBAAAAzgblBQAAGIXyAgAAjEJ5AQAARqG8AAAAo1BeAACAUSgvAADAKJQXAABglABfD1Bb8vLyanxNm82moKAgnTx5Uv782X4Oh0MlJSW+HqNW1IcM/Tk/iQxNVx/yk8jwXERERJxxH868nIUGDRooODhYDRr498vmdDp9PUKtqQ8Z+nN+Ehmarj7kJ5Fhrc/gs2cGAACoBsoLAAAwCuUFAAAYhfICAACMQnkBAABGobwAAACjUF4AAIBRKC8AAMAolBcAAGAUygsAADBKnfhuo4MHDyotLU379u2T3W5Xp06dlJycrODgYB0+fFjLli3T3r17FRYWpjFjxigpKcnXIwMAAB+pE2dennjiCYWGhuq5557TU089pby8PL300kuSpEWLFsntduvFF1/U3XffrSeeeELZ2dk+nhgAAPhKnSgvBw8eVFJSkpxOp0JDQ3XllVcqOztbOTk52r9/v0aPHi2n06mEhAR17dpV77//vq9HBgAAPlInykv//v21detWnTx5UgUFBdq+fbsuv/xyZWdnq2nTpgoNDfXuGx8fz5kXAADqsTrxnpeEhAS99957GjFihMrLy9WxY0ddf/312rZtW4XiIkkhISE6efJkpTVyc3OVm5vrve10OhUdHV2jc9rt9gr/+iubzea3x1gfMvTn/CQyNF19yE8iw9rm8/Li8Xg0e/ZsXX311Vq4cKHKysq0cuVKPf7440pKSlJRUVGF/U+cOKGgoKBK66SlpWnOnDne2zNnztSCBQtqZWaXy1Ur69YlDofD1yPUKn/P0N/zk8jQdP6en0SGtcnn5aWoqEh5eXm6/vrr5XA45HA41LdvXz3wwAMaPXq0Dh8+rOPHj3vPwHz77beKjY2ttE5ycrL69+/vve10OpWfn1+js9rtdrlcLhUUFMjj8dTo2nVJSEhIpdLoL+pDhv6cn0SGpqsP+UlkeC7Cw8PPuI/Py4vL5VKzZs20efNmDRo0SB6PR2+99Zbi4uIUHR2tVq1a6cUXX9Rtt92m//znP8rIyNAjjzxSaR232y232+29nZeXV2s/GB6Px69/6CzL8uvjk/w7w/qQn0SGpvPn/CQyrG0+Ly+SNGPGDK1atUqvv/66bDabLr74Yk2dOlWSdO+992rp0qW6+eab1bhxY02cOPG0Z14AAED9UCfKS3x8vObPn3/a+5o2bap58+ad54kAAEBdVSf+VBoAAKCqKC8wwuTJk9WjRw9fj1FjOnXqpOnTp/t6DAAwEuUFAAAYhfKCeu90H3oIAKi7KC8wyrvvvqsePXqoefPm+uMf/6h//etf3vvWr1+vfv36qXXr1mrVqpUGDBigXbt2VXj8woULFRoaqn//+9+67rrr1Lx5cz377LNat26dmjZtqi+++ELDhg1TbGysunbtqvXr11d4/P/7f/9PvXv3VuvWrRUfH69rrrlG7733XqU5c3NzNWnSJLVr104tWrTQFVdcobS0tN88tp07d2rgwIGKjY1Vy5YtlZycrMOHD1fYZ8mSJerSpYuaN2+utm3batCgQXxdBoB6h/ICYxw8eFDTp0/XpEmT9Mwzz8jpdGro0KHeX/Dfffedhg0bplWrVmnFihVq3ry5+vfvr2+++abCOiUlJRo/frwGDx6s9PR09erVy3vfnXfeqT/84Q96/vnnlZCQoLvuukv79++XJG3btk0TJ07UZ599pqNHjyouLk4dO3bUiBEjtH37du8aP/74o6677jpt375dM2bM0Nq1azVhwgT997///dVj27lzp2688Ua5XC6tXLlSjz32mD799FONGTPGu8/69eu1cOFC3XzzzVq/fr3++te/qn379iosLKyJlxcAjFEn/lQaqIr8/HytWrXK+8bdK6+8Uh06dNCKFSuUmpqqe+65x7tveXm5evXqpV27dmndunWaNWuW977S0lI98MADGjBggHfbF198IUkaO3asbr/9dklSly5d9O677+qNN97Q2LFjNWrUKJWUlHgfs2/fPnXs2FE9e/bUCy+8oMTEREnSU089pby8PH388ceKiYmRpDO+2XjevHnq0KGDVq9eLZvN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61EAVANnXgAAgFEoLwDO6J///Kf69++v6OhohYSE6LLLLtOaNWu892/ZskU2m01vvfWWhg4dqtDQUMXExHgvzSxdulQxMTFq0qSJxo0bp1OnTlVYf/fu3brmmmsUEhKisLAwDR48WAcOHPDen5WVJZvNpldeeaXC41JSUhQXF+e9vXr1atlsNn366ae67rrrFBISotatW+uFF17w7tOrVy9t3bpVmzZtks1mk81m0+zZs2vw1QJQ2ygvAM4oOztbiYmJeuaZZ/TGG29o0KBBGjt2rJ5//vkK+915551q3769XnvtNXXr1k2jR4/W9OnT9dZbb2nFihWaO3euXnjhBT322GPex3z33XdKSkrSkSNH9OKLL2rFihXatWuXevbsqcLCwmrNe/PNN6tPnz7629/+po4dO+rWW2/V3r17JUlPPvmkOnbsqMTERP3zn//UP//5T40bN676Lw6A888CgLNQXl5ulZaWWuPHj7euuOIKy7Is64MPPrAkWffdd593v6NHj1p2u91q0aKFVVJS4t0+aNAg67LLLvPenjp1qhUSEmIdOXLEu23v3r2WzWazli5dalmWZWVmZlqSrJdffrnCLHfffbcVGxvrvf3cc89ZkqwnnnjCu+348eNWcHCwNW/ePO+2nj17Wv369TvHVwKAr3DmBcAZ5efna8qUKYqNjVVgYKACAwP19NNPa//+/RX26927t/e/w8LCFBkZqaSkJAUGBnq3t2nTRt9995339kcffaSrrrpKTZo08W5r27atOnTooG3btlVr3j59+nj/OyQkRLGxsfr++++rtRaAuofyAuCMbr31Vq1bt0733HOP3n77be3cuVO33367iouLK+zXuHHjCrcdDsdpt/38cfn5+YqKiqr0nFFRUfrxxx+rNe+ZnhOA2QJ8PQCAuq24uFhvvvmmHn/8cd11113e7eXl5TWyfpMmTXTo0KFK2w8ePKg2bdpIkho2bChJKikpqbBPfn5+jcwAwCyceQHwm06dOqXy8nI5HA7vtsLCQr3++us1sn737t313nvvVSgiX331lb744gt1795dkhQZGanAwEDvm26ln4rM1q1bq/WcnIkBzMaZFwC/KSwsTF26dNHChQvVtGlTBQQEaOHChQoLCzvtGZOzNXXqVD333HPq06ePHnjgARUXF2vWrFmKiYnRrbfeKklq0KCBbrrpJi1fvlytWrVSRESEli9fLsuyZLPZzvo5L7nkEj3//PN644035Ha7FR0drejo6HM+FgDnB2deAJzR2rVr1apVK91yyy2aMmWKBg8erDFjxtTI2i1atNDWrVsVHh6um2++WePHj1eHDh20ZcsWNWrUyLvfsmXL1KtXL02ZMkXJycm69tprNXDgwGo953333afExESNGTNGXbp00dNPP10jxwLg/ODrAQAAgFE48wIAAIxCeQEAAEahvAAAAKNQXgAAgFEoLwAAwCiUFwAAYBTKCwAAMArlBQAAGIXyAgAAjEJ5AQAARqG8AAAAo/x/UEn/lY6bGMsAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='amount', y='price', label='name')\n", " + geom_point()\n", " + geom_text()\n", " + ylim(0, 80)\n", " + xlim(0, 80)\n", ")" ] }, { "cell_type": "markdown", "id": "49a7c86b", "metadata": {}, "source": [ "## Moving labels above the points they're annotating\n", "\n", "To push a label up, use `nudge_y`. Note that the numbers aren't pixels, but **relative to your axis**. So if you're plotting large numbers – zero to a million for example – your nudge values will probably be very high." ] }, { "cell_type": "code", "execution_count": 26, "id": "83f0a974", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGuCAYAAABY0OakAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2+ElEQVR4nO3deViVdf7/8dfhwDkgmzgCQsrinmmmKWORaIuWmprmlqktmliWaVbmVq5TU1buSWlaOi6VTVelM9mils6kzthY+tOcEjCDVAwFEQQO9++Prs43Bitk8fA5PB/X1YX3cj7nfZ+3d7y87/vct82yLEsAAACG8PF0AQAAABeD8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMIqvpwuoLllZWVU+ps1mU0BAgPLz8+XN9/ZzOBwqLCz0dBnVojb00Jv7J9FD09WG/kn0sDLq16//u+tw5OUi+Pj4qE6dOvLx8e6Pzel0erqEalMbeujN/ZPooelqQ/8keljtNXjsnQEAACqA8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBUZ48MEH1blzZ0+XUWXat2+vSZMmeboMADAS4QUAABilRjzb6Pjx40pJSdGhQ4dkt9vVvn17JScnq06dOjp58qQWLVqkgwcPKjQ0VCNGjFBSUpKnS4YXyc/PV0BAgKfLAACUU4048rJkyRIFBQVp5cqVeumll5SVlaW//OUvkqR58+YpKipKa9as0cMPP6wlS5YoPT3dwxXDUz766CN17txZDRs21I033qh//etf7mUbNmxQr1691KxZMzVt2lR9+/bV3r17S73+mWeeUVBQkP7973+rR48eatiwoV599VWtW7dO4eHh+vLLLzV48GDFxsYqISFBGzZsKPX6LVu2aMCAAbr88ssVHx+vm2++WR9//HGZOjMzMzV27Fi1atVKjRo10jXXXKOUlJTf3LY9e/aoX79+io2NVePGjZWcnKyTJ0+WWmfBggXq2LGjGjZsqJYtW+r2229nfwBQ69SI8HL8+HElJSXJ6XQqKChI1157rdLT05WRkaHDhw9r+PDhcjqdatOmjRISEvTJJ594umR4wPHjxzVp0iSNHTtWy5cvl9Pp1KBBg9y/4L/77jsNHjxYK1as0LJly9SwYUP16dNH3377balxCgsLNXr0aA0YMEDr169X165d3cvuv/9+XX/99XrttdfUpk0bPfTQQzp8+LB7+dGjR9W9e3ctWbJEK1euVEJCgu644w7t3LnTvc6PP/6oHj16aOfOnZo8ebLWrl2rMWPG6IcffvjVbduzZ49uu+02hYSE6JVXXtHzzz+vL774QiNGjHCvs2HDBj3zzDO68847tWHDBr344otq3bq1cnNzK/vRAoBRasRpoz59+mj79u264oorVFRUpJ07d6pjx45KT09XeHi4goKC3OvGx8fryy+/9GC18JTs7GytWLHCfeHutddeq7Zt22rZsmWaPn26Hn30Ufe6JSUl6tq1q/bu3at169Zp2rRp7mVFRUWaOnWq+vbt657389+pkSNH6t5775UkdezYUR999JHee+89TZw4UZI0atSoUu9x3XXX6dChQ3r99deVmJgoSe6jh//4xz8UExMjSb97sfHs2bPVtm1brVq1SjabTZLUqlUrde7cWR9++KG6deumvXv3qlWrVho/frz7dT169Li4DxEAvECNCC9t2rTRxx9/rDvuuEMlJSVq166dbr31Vu3YsaNUcJGkwMBA5efnlxkjMzNTmZmZ7mmn06no6OgqrdNut5f66a1sNluN20YfHx+FhISUOkoSFhamrl276osvvpDdbtfXX3+tOXPmaPfu3aVOtxw5csS9PT8/wr1Hjx6ltvHn+TfeeKN7fkhIiBo2bKgffvjBPe/777/X3LlztX37dv3www+yLEuSdNVVV7nX+eyzz9S5c2fFx8f/7jbZ7XadO3dOu3fv1qxZsyTJPWbz5s112WWXad++fbrlllt01VVXaeXKlXryySfVu3dvXX311fLz8yszbk3sX1WqDfuhN/ewNvRPoofVzePhxeVyacaMGbrpppv0zDPPqLi4WK+88opeeOEFJSUlKS8vr9T6586du+DFlSkpKZo5c6Z7esqUKZo7d2611BwSElIt49YkDofD0yWU4nA4FBERobCwsFLzGzZsqG+++Ua+vr4aOHCgwsPD9eKLLyo2Nlb+/v4aNWqUSkpK3K9zOp2qU6dOmWAbGBgoSYqNjS31HgEBAbIsS2FhYSopKdGNN96oM2fOaPbs2WratKkCAwP15JNP6ujRo+7XnTlzRldddVWZWn/Jx8dHTqdTYWFhOnfunFwul6ZOnaqpU6eWWTcrK0thYWEa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So0zceJEDRw4UK+99po2b96sWbNmqVWrVrrxxhslSVu2bNEjjzyiIUOGqF+/ftq3b59Gjhx5ybcXQNWr8B12s7Ky9OKLL2rXrl3KzMxUVFSUOnXqpPHjx5fra04Aap9Tp04pPT1dc+fO1c033yzppxtV/uyXT6S3LEvXXHONMjIy9Prrr5cJL71799bjjz8uSUpKStJHH32k9957zx1eXnjhhVJHdW644QadP39ezz//fLVuI4DqV6HTRrt27VKzZs20ePFihYaGqkuXLgoNDdWiRYvUpEkT7dq1q6rrBOAF6tWrp0aNGmnOnDlav369+4jLz06fPq3JkyerXbt27rtmv/766/r222/LjHX99de7/2yz2dSsWTP3eC6XS/v27VOvXr1KvaZ3797VsFUALrUKHXkZO3asrrjiCm3evLnUg5nOnDmjHj166MEHH9SePXuqrEgA3sFms+nNN9/U3LlzNWnSJJ07d05t27bVrFmzdO211+qhhx7Snj17NHHiRLVs2VLBwcFauXKl3nnnnTJjhYaGlpp2OBzux5JkZWWpuLi4zFHg8PDwats2AJdOhY68HDhwQE888USZJ0qGhobqiSee0P79+6ukOADep0mTJnr11Vf1zTff6J133pHD4dCwYcN09uxZbdmyRRMmTNB9992nzp0766qrrlJJSclFv0f9+vXl6+tb5k7bJ0+erKrNAOBBFQovTZs21enTpy+47MyZM2rcuHFlagJQC/j5+SkxMVEPP/ywcnNzlZaWppKSEjkcDvc6Z8+e1QcffHDRY9vtdl155ZXatGlTqfl8ExLwDhU6bfTcc89p7NixatSokbp06eKev23bNs2YMUOLFy+usgIBeI8DBw7oqaeeUt++fRUfH6+cnBwtWLBAMTExuvzyy9WuXTstXLhQf/jDH+Tr66uFCxcqJCSkQkdMJkyYoOHDh+uhhx5yf9vozTffrIatAnCpVSi8PPbYYzpz5oxuuOEGhYaGKjw8XCdPntSZM2cUFhamSZMmadKkSZJ+Ose9b9++Ki0agJkiIiIUERGhhQsXKjMzUyEhIfrjH/+opUuXym63a9myZXr00Uf10EMPKSwsTPfdd5/y8vK0ZMmSi36vW265RfPmzdOLL76od955R+3bt9crr7zi/pYTAHNd9FOlJenuu+8udUfd37Ny5cqLfYtK46nSFcfTUM3m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AEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAo/h6uoDyOHv2rJYsWaK9e/cqICBA/fr1U9++fT1dFgAA8AAjwktKSoqKioq0cuVKnThxQtOnT1fDhg119dVXe7o0AABwidX400YFBQXauXOnhg8frjp16iguLk7du3fXhx9+6OnSAACAB9T48PL999/LsizFxsa658XHx+vo0aMerAoAAHhKjT9tVFBQoDp16pSaFxgYqPz8/FLzMjMzlZmZ6Z52Op2Kjo6u0lrsdnupn97KZrN57TbWhh56c/8kemi62tA/iR5WtxofXvz9/csElXPnzikgIKDUvJSUFM2cOdM9PWXKFM2dO7daagoJCamWcWsSh8Ph6RKqlbf30Nv7J9FD03l7/yR6WJ1qfHi57LLLJElHjx5VTEyMJCk1NdX9558lJyerT58+7mmn06ns7OwqrcVutyskJEQ5OTlyuVxVOnZNEhgYqLy8PE+XUS1qQw+9uX8SPTRdbeifRA8rIyws7HfXqfHhxd/fX4mJiVq9erUmTJigkydPasuWLXr44YdLrRcVFaWoqCj3dFZWVrXtGC6Xy6t3OsuyvHr7JO/uYW3on0QPTefN/ZPoYXWr8eFF+umoyuLFi3X33XcrICBAt99+O1+TBgCgljIivAQFBemJJ57wdBkAAKAGqPFflQYAAPglwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjGKzLMvydBGmyMzMVEpKipKTkxUVFeXpclAB9NB89NBs9M98NaGHHHm5CJmZmZo5c6YyMzM9XQoqiB6ajx6ajf6Zryb0kPACAACMQngBAABGIbxchKioKD311FOcpzUYPTQfPTQb/TNfTeghF+wCAACjcOQFAAAYhfACAACM4uvpAkxx9uxZLVmyRHv37lVAQID69eunvn37eros/IqioiItW7ZM+/btU25ururXr69BgwapS5cukqT09HQtWrRIaWlpioyM1OjRo9W2bVsPV40LycnJ0f3336+oqCjNmzdPEv0zyT/+8Q+tXbtWx48fV0hIiEaOHKlrr72WHhri+PHjSklJ0aFDh2S329W+fXslJyerTp06OnnypBYtWqSDBw8qNDRUI0aMUFJS0qUpzEK5zJs3z5o9e7aVl5dnpaamWsOGDbP+9a9/ebos/Ir8/HxrzZo1VmZmplVSUmIdOHDAGjx4sHXw4EGrqKjIGjlypLVhwwarsLDQ+vTTT63Bgwdb2dnZni4bFzB//nxr0qRJ1sSJEy3LsuifQf7zn/9Y99xzj3XgwAHL5XJZ2dnZVmZmJj00yPTp063nn3/eKigosHJzc60pU6ZYL7/8smVZlvX4449bS5cutQoKCqwvv/zSGjRokJWWlnZJ6uK0UTkUFBRo586dGj58uOrUqaO4uDh1795dH374oadLw6/w9/fXnXfeqQYNGshms6lVq1a6/PLLdfDgQX311Vc6f/68BgwYID8/P3Xu3FkxMTHauXOnp8vG/9i/f78yMjJ00003uefRP3OsXbtWgwcPVqtWreTj46O6deuqQYMG9NAgx48fV1JSkpxOp4KCgtxHzTIyMnT48GENHz5cTqdTbdq0UUJCgj755JNLUhfhpRy+//57WZal2NhY97z4+HgdPXrUg1XhYhQUFOibb75RbGysjh49qri4OPn4/N9f/8aNGys9Pd2DFeJ/FRUVKSUlRWPGjJHNZnPPp39mcLlc+u9//6uzZ89qzJgxuvvuu7VgwQLl5eXRQ4P06dNH27dvV35+vnJycrRz505dffXVSk9PV3h4uIKCgtzrxsfHX7IeEl7KoaCgQHXq1Ck1LzAwUPn5+R6qCBejpKRE8+fPV7NmzdSuXTvl5+crMDCw1Dr0s+bZuHGj2rZtq/j4+FLz6Z8ZTp8+reLiYn366aeaM2eOFi9erNOnT2v58uX00CBt2rTR999/rzvuuEPDhg2Tn5+fbr31VhUUFJQKLtKl7SHhpRz8/f3LNOTcuXMKCAjwUEUoL8uytHTpUv3444967LHHZLPZFBAQoLy8vFLr5eXl0c8aJCMjQx9//LGGDh1aZhn9M4PT6ZQk9erVS/Xr11dQUJAGDhyoPXv20ENDuFwuzZgxQx06dNAbb7yh9evXq169enrhhRfk7+9fpoeX8vci4aUcLrvsMkkqdZooNTVVMTExnioJ5WBZlpYtW6bU1FTNmDHDvVPFxMQoPT1dJSUl7nVTU1NLnRaEZx08eFDZ2dkaM2aMRowYoVdeeUVHjhzRiBEjFBkZSf8MEBQUpPr165c65fcz9kEz5OXlKSsrS7feeqscDofq1Kmjnj176t///rdiY2N18uRJnT171r3+kSNHLlkPCS/l4O/vr8TERK1evVrnzp1Tenq6tmzZom7dunm6NPyGlJQUff3115o5c2ap035t2rSRw+HQ22+/raKiIu3YsUPp6elKTEz0YLX4peuuu06vvPKKFixYoAULFmjo0KGKjY3VggUL1KFDB/pniO7du2vTpk3Kzs7WuXPntHHjRiUkJLAPGiIkJEQNGjTQ5s2bVVRUpIKCAn3wwQeKi4tTdHS0mjZtqjVr1uj8+fPav3+/du/erRtuuOGS1MbjAcrp7NmzWrx4sfs+L/379+c+LzXYiRMnNGrUKPn5+clut7vnDxgwQIMGDVJaWpoWL16stLQ0RUREKDk5mXtM1GAff/yx/va3v7nv80L/zOByubRixQpt27ZNdrtdHTp00H333ac6derQQ0OkpqZqxYoVOnLkiGw2m1q0aKH77rtPUVFROnnypBYuXKiDBw+qbt26Gj58uPteWtWN8AIAAIzCaSMAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCC4BaZ9WqVVq7dq2nywBQQTweAECt07VrVwUFBen999/3dCkAKoAjLwAAwCiEFwC/65///Kf69Omj6OhoBQYG6qqrrtLq1avdy7dt2yabzaYPPvhAgwYNUlBQkGJiYtynZhYuXKiYmBjVq1dPo0aN0vnz50uN/9VXX+nmm29WYGCgQkNDNWDAAB09etS9PC0tTTabTW+99Vap140fP15xcXHu6VWrVslms+mLL75Qjx49FBgYqGbNmun11193r9O1a1dt375dmzZtks1mk81m04wZM6rw0wJQ3QgvAH5Xenq6EhMTtXz5cr333nu6/fbbNXLkSL322mul1rv//vvVunVr/fWvf1WnTp00fPhwTZo0SR988IGWLVumWbNm6fXXX9fzzz/vfs13332npKQknTp1SmvWrNGyZcu0d+9edenSRbm5uRWq984771T37t31zjvvqF27drr77rt18OBBSdLSpUvVrl07JSYm6p///Kf++c9/atSoURX/cABcehYAXISSkhKrqKjIGj16tHXNNddYlmVZW7dutSRZjz/+uHu906dPW3a73WrUqJFVWFjonn/77bdbV111lXt6woQJVmBgoHXq1Cn3vIMHD1o2m81auHChZVmWlZqaakmy3nzzzVK1PPzww1ZsbKx7euXKlZYka8mSJe55Z8+eterUqWPNnj3bPa9Lly5Wr169KvlJAPAUjrwA+F3Z2dkaN26cYmNj5efnJz8/P7388ss6fPhwqfW6devm/nNoaKgiIiKUlJQkPz8/9/zmzZvru+++c09/9tlnuuGGG1SvXj33vJYtW6pt27basWNHhert3r27+8+BgYGKjY3VsWPHKjQWgJqH8ALgd919991at26dHn30UW3ZskV79uzRvffeq4KCglLr1a1bt9S0w+G44Lxfvi47O1uRkZFl3jMyMlI//vhjher9vfcEYDZfTxcAoGYrKCjQ+++/rxdeeEEPPfSQe35JSUmVjF+vXj2dOHGizPzjx4+refPmkiR/f39JUmFhYal1srOzq6QGAGbhyAuA33T+/HmVlJTI4XC45+Xm5urdd9+tkvGvu+46ffzxx6WCyNdff60vv/xS1113nSQpIiJCfn5+7otupZ+CzPbt2yv0nhyJAczGkRcAvyk0NFQdO3bUM888o/DwcPn6+uqZZ55RaGjoBY+YXKwJEyZo5cqV6t69u6ZOnaqCggJNmzZNMTExuvvuuyVJPj4+6t+/vxYvXqymTZuqfv36Wrx4sSzLks1mu+j3vPzyy/Xaa6/pvffeU1RUlKKjoxUdHV3pbQFwaXDkBcDvWrt2rZo2baq77rpL48aN04ABAzRixIgqGbtRo0bavn27wsLCdOedd2r06NFq27attm3bpuDgYPd6ixYtUteuXTVu3DglJyfrlltuUb9+/Sr0no8//rgSExM1YsQIdezYUS+//HKVbAuAS4PHAwAAAKNw5AUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARvn/hUXcea3VXscAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='amount', y='price', label='name')\n", " + geom_point()\n", " + geom_text(nudge_y=3)\n", " + ylim(0, 80)\n", " + xlim(0, 80)\n", ")" ] }, { "cell_type": "markdown", "id": "a94c721e", "metadata": {}, "source": [ "## Moving labels next to the points they're annotating\n", "\n", "To move a label to the left or right, you need to do two things: change the alignment, and then nudge to prevent overlap. This means passing `ha='left'` or `ha='right'` to your `geom_text`, along with a `nudge_x` that moves your text away from your point." ] }, { "cell_type": "code", "execution_count": 27, "id": "dc2e1e2b", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGuCAYAAABY0OakAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2UUlEQVR4nO3de1iUdf7/8dc4MCMig5iCY8rBU2YaqykdULRWrbQ0DY+pHbQwLdO1Mi1LRTe3tdZzUpqWrYdaa69Kd7MsLW0T92sH9ae5FWAGXxVFQRSB4f790dV8d8IKERo+w/NxXV163/dnPvO+572zvq7Pfc+MzbIsSwAAAIao4+8CAAAALgThBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABglCB/F1BdcnNzq3xOm82mkJAQnT17VoH83X4Oh0PFxcX+LqNa1IYeBnL/JHpoutrQP4keXoxGjRr96hhWXi5AnTp1VK9ePdWpE9gvm9Pp9HcJ1aY29DCQ+yfRQ9PVhv5J9LDaa/DbMwMAAFQC4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGKVG/LbRkSNHlJaWpgMHDshut6tTp05KSUlRvXr1dOzYMS1atEj79+9XeHi4Ro0apaSkJH+XDAAA/KRGrLwsWbJE9evX18qVK/X8888rNzdXf/3rXyVJ8+bNk9vt1quvvqqHHnpIS5YsUVZWlp8rBgAA/lIjwsuRI0eUlJQkp9Op+vXr67rrrlNWVpays7N18OBBjRw5Uk6nUx06dFBCQoI++OADf5cMAAD8pEaEl379+mnbtm06e/as8vPztWPHDl111VXKyspS48aNVb9+fe/YuLg4Vl4AAKjFasQ9Lx06dNCWLVs0bNgwlZWVqWPHjrrlllu0fft2n+AiSaGhoTp79my5OXJycpSTk+Pddjqdatq0aZXWabfbff4MVDabLWDPsTb0MJD7J9FD09WG/kn0sLr5Pbx4PB7NmDFDPXv21Ny5c1VaWqoXX3xRzz33nJKSklRYWOgz/syZMwoJCSk3T1pammbOnOndnjZtmubMmVMtNbtcrmqZtyZxOBz+LqFaBXoPA71/Ej00XaD3T6KH1cnv4aWwsFC5ubm65ZZb5HA45HA41KdPHz3++OMaOXKkjh07ptOnT3tXYL799lvFxMSUmyclJUX9+vXzbjudTuXl5VVprXa7XS6XS/n5+fJ4PFU6d00SGhpaLjQGitrQw0Dun0QPTVcb+ifRw4sRERHxq2P8Hl5cLpeaNGmiTZs26fbbb5fH49G7776r2NhYNW3aVK1atdKrr76qu+++W//5z3+Unp6uZ555ptw8brdbbrfbu52bm1ttbwyPxxPQbzrLsgL6/KTA7mFt6J9ED00XyP2T6GF183t4kaSpU6dqxYoVeuutt2Sz2XTZZZdp0qRJkqRHHnlECxcu1B133KEGDRpo3Lhx5115AQAAtUONCC9xcXGaPXv2eY81btxYqampv3FFAACgpqoRH5UGAACoKMILUMUeeOABdevWzd9lVJlOnTppypQp/i4DALwILwAAwCiEF8Ag5/uCRgCobQgvwAXIz89Xenq69u/fr7Kysl8c+/7776tbt25q1qyZfv/73+vf//6399j69evVt29ftW7dWq1atVL//v21e/dun8c/88wziomJ0e7du3XzzTerWbNmeumll7R27Vo1btxYX375pYYMGaKYmBglJCRo/fr1Po/fvHmzkpOTdfnllysuLk433nijtmzZUq7OnJwcjR8/Xu3atVPz5s117bXXKi0t7RfPbdeuXRowYIBiYmLUokULpaSk6NixYz5jFixYoC5duqhZs2Zq27atbr/9dn7aA0CVILwAFbR9+3bFx8erb9++SkpKUnJy8s9+CdWRI0c0ZcoUjR8/XsuXL5fT6dTgwYO9/8B/9913GjJkiFasWKFly5apWbNm6tevn7755hufeUpKSpSSkqLk5GStW7dOPXr08B67//77df311+vll19Whw4d9OCDD+rgwYPe44cOHVLv3r21ZMkSrVy5UgkJCRo2bJh27NjhHXPixAndfPPN2rFjh6ZOnao1a9Zo7Nix+t///d+ffR127dql2267TS6XSy+++KKeffZZffbZZxo1apR3zPr16zV37lzdcccdWr9+vf7yl7+offv2KigouKDXHADOp0Z8VBqo6U6ePKkRI0b4hJVPP/1UTz31lObNm1dufF5enlasWOG9cfe6665TfHy8li1bpunTp+vhhx/2ji0rK1OPHj20e/durV27Vk888YT3WElJiaZNm6YBAwZ493355ZeSpNGjR+uee+6RJHXp0kXvv/++3n77bV111VWS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ywECVqXCy6pVq6q4DAAAgIqp1D0vAAAA/kJ4ARBQDhw4oKFDh6pNmzaKjo7WNddco0WLFkmSdu3apREjRqh9+/aKiYlRjx499Nprr/k8fseOHWrcuLG2bt2qlJQUxcbGqmPHjt45/tvq1avVqVMnRUdHa+DAgfx0CvAbqfTPAwDAb+ncuXNKS0vTgQMHFBcXp7vvvvu8P0UyYsQINW7cWPPnz5fL5VJGRoays7MlSYcPH1ZCQoLuvPNO1a1bV+np6Zo4caLKyso0dOhQn3keeeQRDRo0SC+//LI2bdqkWbNmqV27dvr9738vSdq8ebP+8Ic/aOjQoRowYIC++OILjR49uvpfCACEFwA1X0lJiQYOHKjPPvtMJSUlCg4O1sqVK/Xhhx8qKirKO+748ePKysrSnDlzdOONN0qSunbt6j0+YMAA798ty9K1116r7OxsvfLKK+XCyy233KJHH31UkpSUlKT3339fb7/9tje8PPfccz6rOjfccIPOnTunZ599tnpeBABeXDYCUONt2rRJu3fvVklJiaQfwszJkye1ePFin3ENGzZU8+bNNXv2bK1bt8674vKjkydPaurUqerYsaPcbrfcbrdeeeUVffPNN+Wes0ePHt6/22w2tW7d2jufx+PRF198ob59+/o85tZbb62K0wXwKwgvAGq8nJwcBQX5LhSXlJTo8OHDPvtsNptef/11tW7dWlOmTFF8fLx69uypTz75RJL04IMP6s0339S4ceP0+uuv67333tPw4cNVVFRU7jnDw8N9th0Oh86dOydJys3NVWlpabnLVo0bN77ocwXw67hsBKDGa9OmjYqLi332ORwOXX755eXGtmzZUi+99JJKSkqUnp6uOXPmaMSIEfryyy+1efNmzZo1S/fee693fFlZ2QXX06hRIwUFBSk3N9dn/7Fjxy54LgAXjpUXADXe9ddfr6FDh6pOnTqqW7eugoOD1bZtWz3wwAM/+5jg4GAlJibqoYceUkFBgTIzM1VWViaHw+Edc/r0ab377rsXXI/dbteVV16pjRs3+ux/++23L3guABeOlRcANZ7NZtP8+fN1yy236ODBg2rZsqV69uxZ7lLSvn379NRTT6l///6Ki4tTfn6+FixYoOjoaF1++eXq2LGjFi5cqEsuuURBQUFauHChXC5XpVZMJk2apJEjR+rBBx/0ftro9ddfr6pT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tav3eGpqquLj47Vq1SrZbDZJUrt27dStWze999576tWrlyRp4cKF3sd4PB716NFDLVu21Mcff6zrr79e33zzjfLz8/XEE0+oXbt2kqSkpKRydZ86dUoffPCBGjVq5D2PCRMmKDs7W02bNtX27dv1z3/+U6+99pquv/56SVKPHj105MgRPfPMMxUOL7t371a7du00ceJE776bb765Qo+tCbhsBAAIOGvXrlVGRoaKi4slSSUlJcrOztaqVat8xjVs2FDNmzfX7NmztW7dOu+KiySdOXNG6enp6tevnzwej0pLS1VaWqqWLVvq0ksv1eeff+4d+/7776tPnz5q0aKFmjRpopYtW0qSvvnmG0lSbGyswsLC9Mgjj+jvf/+7cnNzz1t3+/btvcFFki677DJJ8tb14YcfKiIiQt26dfPWU1paqu7du2vPnj3yeDwVen2uvPJK7dmzR9OnT9enn36qkpKSCj2upiC8AAACTk5OTrl9ZWVlPuFEkmw2m15//XW1bt1aU6ZMUXx8vHr27KlPPvlEp06dksfj0fTp0+V2u33+O3z4sL7//ntJ0meffaaRI0cqKipKS5cu1T/+8Q999NFHkn64P0WSGjRooL/97W+qX7++xo8fryuuuEL9+/fX//t//8+nnp9e1goODvaZ58SJE8rLyytXz6RJk1RaWqojR45U6PUZNmyYUlNT9eGHH+rWW29V27ZtNW3aNJ09e7ZCj/c3LhsBAAJOmzZtZFmWzz6bzeZdyfhvLVu21EsvvaSSkhKlp6drzpw5GjFihD7//HPZbDZNnDhRffr0Kfe4hg0bSpI2btwol8ulFStWqE6dH9YETpw4UW58p06dtH79ep09e1bbt2/XjBkzdOedd2rXrl0VPq+IiAg1atRIa9euPe/x/161+SV16tRRSkqKUlJSlJOTozfffFOpqam65JJLNHny5ArX4y+EFwBAwElOTtZbb72lLVu2KDg4WKWlpbr22ms1YsSIn31McHCwEhMT9dBDD2nEiBE6duyYOnfurIMHD2ratGk/+7iioiIFBQV574mRdN5PEf0oJCREvXr1UmZmph5//HEVFRWpbt26FTqvpKQkLVq0SMHBwbriiisq9Jhf43a7NW7cOG3YsEEHDx6skjmrG+EFABBw7Ha7Vq9erY0bNyozM1PNmzfXrbfeKrvd7jNu3759euqpp9S/f3/FxcUpPz9fCxYsUHR0tGJjYzVjxgwNHDhQY8aM0YABA9SgQQNlZ2dr69atGj58uBITE9W9e3elpaXpscceU9++fbVr165yH13evHmz1qxZoz59+ujSSy/V0aNHtXz5ciUkJFQ4uEg/3Jx74403asiQIXrggQd0xRVX6MyZMzpw4IAyMjI0f/78Cs0zefJkhYeHq3PnzgoPD1d6err27dunu+++u8K1+BPhBQAQkOrUqaNbb731F8dERkYqMjJSCxcuVE5Ojlwul66++motXbpUdrtdCQkJeuedd/SnP/1JEyZMUElJidxut5KSkhQXFydJ6tWrl5588kktX75c69atU0JCgt588021b9/e+zwtWrSQzWbTH//4R+Xm5ioiIkI9evTQE088ccHn9dJLL2nhwoVauXKlDh8+LJfLpbZt22rYsGEVnqNLly5avXq1Xn31VZ09e1YxMTFKTU39xZWpmsRm/fSiYID4uTu5L4bdbldERITy8vIqfEe3icLCwoz5rP+Fqg09DOT+SfTQdLWhfxI9vBgVuW+HTxsBAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCgB+9tG+fn5cjqdVTqnzWaTw+FQcXGxAvRlkyQFBQWptLTU32VUi9rQw0Dun0QPTVcb+ifRw4tRkX+7A/ZXpYuLi1VcXFylc9rtdjkcDhUWFvKDYoaqDT0M5P5J9NB0taF/Ej28GBUJL1w2AgAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKMQXgAAgFEILwAAwCiEFwAAYBTCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMQngBAABGIbwAAACjEF4AAIBRgvxdQEWcPn1aS5Ys0e7duxUSEqIBAwaof//+/i4LAAD4gRHhJS0tTSUlJVq5cqWOHj2q6dOnq1mzZrrqqqv8XRoAAPiN1fjLRkVFRdqxY4dGjhypevXqKTY2Vr1799Z7773n79IAAIAf1Pjw8v3338uyLMXExHj3xcXF6dChQ36sCgAA+EuNv2xUVFSkevXq+ewLDQ3V2bNnffbl5OQoJyfHu+10OtW0adMqrcVut/v8GahsNlvAnmNt6GEg90+ih6arDf2T6GF1q/HhpW7duuWCypkzZxQSEuKzLy0tTTNnzvRuT5s2TXPmzKmWmlwuV7XMW5M4HA5/l1CtAr2Hgd4/iR6aLtD7J9HD6lTjw8ull14qSTp06JCio6MlSRkZGd6//yglJUX9+vXzbjudTuXl5VVpLXa7XS6XS/n5+fJ4PFU6d00SGhqqwsJCf5dRLWpDDwO5fxI9NF1t6J9EDy9GRETEr46p8eGlbt26SkxM1OrVqzVp0iQdO3ZMmzdv1kMPPeQzzu12y+12e7dzc3Or7Y3h8XgC+k1nWVZAn58U2D2sDf2T6KHpArl/Ej2sbjU+vEg/rKosXrxYd911l0JCQnT77bfzMWkAAGopI8JL/fr19dhjj/m7DAAAUAPU+I9KAwAA/DfCCwAAMArhBQAAGIXwAgAAjEJ4AQAARiG8AAAAoxBeAACAUQgvAADAKIQXAABgFMILAAAwCuEFAAAYhfACAACMYrMsy/J3EabIyclRWlqaUlJS5Ha7/V0OKoEemo8emo3+ma8m9JCVlwuQk5OjmTNnKicnx9+loJLoofnoodnon/lqQg8JLwAAwCiEFwAAYBTCywVwu9166qmnuE5rMHpoPnpoNvpnvprQQ27YBQAARmHlBQAAGIXwAgAAjBLk7wJMcfr0aS1ZskS7d+9WSEiIBgwYoP79+/u7LPyMkpISLVu2TF988YUKCgrUqFEjDR48WN27d5ckZWVladGiRcrMzFRUVJTuu+8+xcfH+7lqnE9+fr7uv/9+ud1uzZs3TxL9M8knn3yiNWvW6MiRI3K5XBo9erSuu+46emiII0eOKC0tTQcOHJDdblenTp2UkpKievXq6dixY1q0aJH279+v8PBwjRo1SklJSb9NYRYqZN68eVZqaqpVWFhoZWRkWCNGjLD+/e9/+7ss/IyzZ89ar776qpWTk2OVlZVZ+/bts4YMGWLt37/fKikpsUaPHm2tX7/eKi4utj766CNryJAhVl5enr/LxnnMnz/fmjJlijV58mTLsiz6Z5DPP//cuvvuu619+/ZZHo/HysvLs3JycuihQaZPn249++yzVlFRkVVQUGBNmzbNeuGFFyzLsqxHH33UWrp0qVVUVGR9+eWX1uDBg63MzMzfpC4uG1VAUVGRduzYoZEjR6pevXqKjY1V79699d577/m7NPyMunXr6o477lCTJk1ks9nUrl07XX755dq/f7/27Nmjc+fOKTk5WcHBwerWrZuio6O1Y8cOf5eNn9i7d6+ys7PVs2dP7z76Z441a9ZoyJAhateunerUqaMGDRqoSZMm9NAgR44cUVJSkpxOp+rXr+9dNcvOztbBgwc1cuRIOZ1OdejQQQkJCfrggw9+k7oILxXw/fffy7IsxcTEePfFxcXp0KFDfqwKF6KoqEhff/21YmJidOjQIcXGxqpOnf/7n3+LFi2UlZXlxwrxUyUlJUpLS9PYsWNls9m8++mfGTwej/7zn//o9OnTGjt2rO666y4tWLBAhYWF9NAg/fr107Zt23T27Fnl5+drx44duuqqq5SVlaXGjRurfv363rFxcXG/WQ8JLxVQVFSkevXq+ewLDQ3V2bNn/VQRLkRZWZnmz5+v1q1bq2PHjjp79qxCQ0N9xtDPmmfDhg2Kj49XXFycz376Z4aTJ0+qtLRUH330kWbPnq3Fixfr5MmTWr58OT00SIcOHfT9999r2LBhGjFihIKDg3XLLbeoqKjIJ7hIv20PCS8VULdu3XINOXPmjEJCQvxUESrKsiwtXbpUJ06c0COPPCKbzaaQkBAVFhb6jCssLKSfNUh2dra2bNmi4cOHlztG/8zgdDolSX379lWjRo1Uv359DRo0SLt27aKHhvB4PJoxY4Y6d+6s1157TevWrVPDhg313HPPqW7duuV6+Fv+u0h4qYBLL71UknwuE2VkZCg6OtpfJaECLMvSsmXLlJGRoRkzZnjfVNHR0crKylJZWZl3bEZGhs9lQfjX/v37lZeXp7Fjx2rUqFF68cUX9e2332rUqFGKioqifwaoX7++GjVq5HPJ70e8B81QWFio3Nxc3XLLLXI4HKpXr5769Omj//mf/1FMTIyOHTum06dPe8d/++23v1kPCS8VULduXSUmJmr16tU6c+aMsrKytHnzZvXq1cvfpeEXpKWl6auvvtLMmTN9Lvt16NBBDodDb7zxhkpKSrR9+3ZlZWUpMTHRj9Xiv3Xt2lUvvviiFixYoAULFmj48OGKiYnRggUL1LlzZ/pniN69e2vjxo3Ky8vTmTNntGHDBiUkJPAeNITL5VKTJk20adMmlZSUqKioSO+++65iY2PVtGlTtWrVSq+++qrOnTunvXv3Kj09XTfccMNvUhs/D1BBp0+f1uLFi73f8zJw4EC+56UGO3r0qMaMGaPg4GDZ7Xbv/uTkZA0ePFiZmZlavHixMjMzFRkZqZSUFL5jogbbsmWL/vGPf3i/54X+mcHj8WjFihXaunWr7Ha7OnfurHvvvVf16tWjh4bIyMjQihUr9O2338pms+myyy7TvffeK7fbrWPHjmnhwoXav3+/GjRooJEjR3q/S6u6EV4AAIBRuGwEAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAFQ66xatUpr1qzxdxkAKomfBwBQ6/To0UP169fXO++84+9SAFQCKy8AAMAohBcAv+pf//qX+vXrp6ZNmyo0NFS/+93vtHr1au/xrVu3ymaz6d1339XgwYNVv359RUdHey/NLFy4UNHR0WrYsKHGjBmjc+fO+cy/Z88e3XjjjQoNDVV4eLiSk5N16NAh7/HMzEzZbDb97W9/83ncxIkTFRsb691etWqVbDabPvvsM918880KDQ1V69at9corr3jH9OjRQ9u2bdPGjRtls9lks9k0Y8aMKny1AFQ3wguAX5WVlaXExEQtX75cb7/9tm6//XaNHj1aL7/8ss+4+++/X+3bt9ebb76pa665RiNHjtSUKVP07rvvatmyZZo1a5ZeeeUVPfvss97HfPfdd0pKStLx48f16quvatmyZdq9e7e6d++ugoKCStV7xx13qHfv3vr73/+ujh076q677tL+/fslSUuXLlXHjh2VmJiof/3rX/rXv/6lMWPGVP7FAfDbswDgApSVlVklJSXWfffdZ1177bWWZVnWhx9+aEmyHn30Ue+4kydPWna73WrevLlVXFzs3X/77bdbv/vd77zbkyZNskJDQ63jx4979+3fv9+y2WzWwoULLcuyrIyMDEuS9frrr/vU8tBDD1kxMTHe7ZUrV1qSrCVLlnj3nT592qpXr56Vmprq3de9e3erb9++F/lKAPAXVl4A/Kq8vDxNmDBBMTExCg4OVnBwsF544QUdPHjQZ1yvXr28fw8PD1dkZKSSkpIUHBzs3d+mTRt999133u2PP/5YN9xwgxo2bOjd17ZtW8XHx2v79u2Vqrd3797ev4eGhiomJkaHDx+u1FwAah7CC4Bfddddd2nt2rV6+OGHtXnzZu3atUv33HOPioqKfMY1aNDAZ9vhcJx3338/Li8vT1FRUeWeMyoqSidOnKhUvb/2nADMFuTvAgDUbEVFRXrnnXf03HPP6cEHH/TuLysrq5L5GzZsqKNHj5bbf+TIEbVp00aSVLduXUlScXGxz5i8vLwqqQGAWVh5AfCLzp07p7KyMjkcDu++goICvfXWW1Uyf9euXbVlyxafIPLVV1/pyy+/VNeuXSVJkZGRCg4O9t50K/0QZLZt21ap52QlBjAbKy8AflF4eLi6dOmiuXPnqnHjxgoKCtLcuXMVHh5+3hWTCzVp0iStXLlSvXv31uOPP66ioiI98cQTio6O1l133SVJqlOnjgYOHKjFixerVatWatSokRYvXizLsmSz2S74OS+//HK9/PLLevvtt+V2u9W0aVM1bdr0os8FwG+DlRcAv2rNmjVq1aqV7rzzTk2YMEHJyckaNWpUlczdvHlzbdu2TREREbrjjjt03333KT4+Xlu3blVYWJh33KJFi9SjRw9NmDBBKSkpuummmzRgwIBKPeejjz6qxMREjRo1Sl26dNELL7xQJecC4LfBzwMAAACjsPICAACMQngBAABGIbwAAACjEF4AAIBRCC8AAMAohBcAAGAUwgsAADAK4QUAABiF8AIAAIxCeAEAAEYhvAAAAKP8f6GZg7Celc95AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(\n", " ggplot(df)\n", " + aes(x='amount', y='price', label='name')\n", " + geom_point()\n", " + geom_text(ha='left', nudge_x=1)\n", " + ylim(0, 80)\n", " + xlim(0, 80)\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "c8d22eaa", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }