{ "metadata": { "name": "", "signature": "sha256:ddcc97f818d11f40a36a1c97130f78bd645226afa369ca29acbc3489c367f3b0" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Histograms In MatPlotLib\n", "\n", "- **Author:** [Chris Albon](http://www.chrisalbon.com/), [@ChrisAlbon](https://twitter.com/chrisalbon)\n", "- **Date:** -\n", "- **Repo:** [Python 3 code snippets for data science](https://github.com/chrisalbon/code_py)\n", "- **Note:** Based on: [Sebastian Raschka](http://nbviewer.ipython.org/github/rasbt/matplotlib-gallery/blob/master/ipynb/barplots.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import math\n", "\n", "# Set ipython's max row display\n", "pd.set_option('display.max_row', 1000)\n", "\n", "# Set iPython's max column width to 50\n", "pd.set_option('display.max_columns', 50)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 89 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create dataframe" ] }, { "cell_type": "code", "collapsed": false, "input": [ "df = pd.read_csv('https://www.dropbox.com/s/52cb7kcflr8qm2u/5kings_battles_v1.csv?dl=1')\n", "df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", " \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", " \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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameyearbattle_numberattacker_kingdefender_kingattacker_1attacker_2attacker_3attacker_4defender_1defender_2defender_3defender_4attacker_outcomebattle_typemajor_deathmajor_captureattacker_sizedefender_sizeattacker_commanderdefender_commandersummerlocationregionnote
0 Battle of the Golden Tooth 298 1 Joffrey/Tommen Baratheon Robb Stark Lannister NaN NaN NaN Tully NaNNaNNaN win pitched battle 1 0 15000 4000 Jaime Lannister Clement Piper, Vance 1 Golden Tooth The Westerlands NaN
1 Battle at the Mummer's Ford 298 2 Joffrey/Tommen Baratheon Robb Stark Lannister NaN NaN NaN Baratheon NaNNaNNaN win ambush 1 0 NaN 120 Gregor Clegane Beric Dondarrion 1 Mummer's Ford The Riverlands NaN
2 Battle of Riverrun 298 3 Joffrey/Tommen Baratheon Robb Stark Lannister NaN NaN NaN Tully NaNNaNNaN win pitched battle 0 1 15000 10000 Jaime Lannister, Andros Brax Edmure Tully, Tytos Blackwood 1 Riverrun The Riverlands NaN
3 Battle of the Green Fork 298 4 Robb Stark Joffrey/Tommen Baratheon Stark NaN NaN NaN Lannister NaNNaNNaN loss pitched battle 1 1 18000 20000 Roose Bolton, Wylis Manderly, Medger Cerwyn, H... Tywin Lannister, Gregor Clegane, Kevan Lannist... 1 Green Fork The Riverlands NaN
4 Battle of the Whispering Wood 298 5 Robb Stark Joffrey/Tommen Baratheon Stark Tully NaN NaN Lannister NaNNaNNaN win ambush 1 1 1875 6000 Robb Stark, Brynden Tully Jaime Lannister 1 Whispering Wood The Riverlands NaN
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ " name year battle_number \\\n", "0 Battle of the Golden Tooth 298 1 \n", "1 Battle at the Mummer's Ford 298 2 \n", "2 Battle of Riverrun 298 3 \n", "3 Battle of the Green Fork 298 4 \n", "4 Battle of the Whispering Wood 298 5 \n", "\n", " attacker_king defender_king attacker_1 attacker_2 \\\n", "0 Joffrey/Tommen Baratheon Robb Stark Lannister NaN \n", "1 Joffrey/Tommen Baratheon Robb Stark Lannister NaN \n", "2 Joffrey/Tommen Baratheon Robb Stark Lannister NaN \n", "3 Robb Stark Joffrey/Tommen Baratheon Stark NaN \n", "4 Robb Stark Joffrey/Tommen Baratheon Stark Tully \n", "\n", " attacker_3 attacker_4 defender_1 defender_2 defender_3 defender_4 \\\n", "0 NaN NaN Tully NaN NaN NaN \n", "1 NaN NaN Baratheon NaN NaN NaN \n", "2 NaN NaN Tully NaN NaN NaN \n", "3 NaN NaN Lannister NaN NaN NaN \n", "4 NaN NaN Lannister NaN NaN NaN \n", "\n", " attacker_outcome battle_type major_death major_capture attacker_size \\\n", "0 win pitched battle 1 0 15000 \n", "1 win ambush 1 0 NaN \n", "2 win pitched battle 0 1 15000 \n", "3 loss pitched battle 1 1 18000 \n", "4 win ambush 1 1 1875 \n", "\n", " defender_size attacker_commander \\\n", "0 4000 Jaime Lannister \n", "1 120 Gregor Clegane \n", "2 10000 Jaime Lannister, Andros Brax \n", "3 20000 Roose Bolton, Wylis Manderly, Medger Cerwyn, H... \n", "4 6000 Robb Stark, Brynden Tully \n", "\n", " defender_commander summer location \\\n", "0 Clement Piper, Vance 1 Golden Tooth \n", "1 Beric Dondarrion 1 Mummer's Ford \n", "2 Edmure Tully, Tytos Blackwood 1 Riverrun \n", "3 Tywin Lannister, Gregor Clegane, Kevan Lannist... 1 Green Fork \n", "4 Jaime Lannister 1 Whispering Wood \n", "\n", " region note \n", "0 The Westerlands NaN \n", "1 The Riverlands NaN \n", "2 The Riverlands NaN \n", "3 The Riverlands NaN \n", "4 The Riverlands NaN " ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Make plot with bins of fixed size" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Make two variables of the attacker and defender size, but leaving out\n", "# cases when there are over 10000 attackers\n", "data1 = df['attacker_size'][df['attacker_size'] < 90000]\n", "data2 = df['defender_size'][df['attacker_size'] < 90000]\n", "\n", "# Create bins of 2000 each\n", "bins = np.arange(data1.min(), data2.max(), 2000) # fixed bin size\n", "\n", "# Plot a histogram of attacker size\n", "plt.hist(data1, \n", " bins=bins, \n", " alpha=0.5, \n", " color='#EDD834',\n", " label='Attacker')\n", "\n", "# Plot a histogram of defender size\n", "plt.hist(data2, \n", " bins=bins, \n", " alpha=0.5, \n", " color='#887E43',\n", " label='Defender')\n", "\n", "# Set the x and y boundaries of the figure\n", "plt.ylim([0, 10])\n", "\n", "# Set the title and labels\n", "plt.title('Histogram of Attacker and Defender Size')\n", "plt.xlabel('Number of troops')\n", "plt.ylabel('Number of battles')\n", "plt.legend(loc='upper right')\n", "\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nBB1GVEqlIlJjzJw5k969ezN48GBmzJgBwODBg9m0aRP9+vUjKSmJqVOn0rNnTwCSk5NJSkpi4cKF\nrF+/nl69epGSkkLz5s0ZNGgQeXl5xcvevHkz/fv357jjjiMlJYU777wzagx33303PXr0ID8/n7y8\nPG6++WZatWpF69atue+++ygsLASsyapbt26MHj2alJQUJk6cGOO9c+SUKESkxpg5cybXXXcd1157\nLe+++y45OTm88MILpKamMnfuXPLz87n77rtZsGABAHl5eeTn53PeeecBMH78eLZs2cLq1avZvHkz\nmZmZgJ3t9+3bl3bt2rFx40ays7O5/vrSj7MrKirilltuYcWKFbz33nskJSVxww03ULduXdavX8+S\nJUuYN28ezz33XPFvFi1aRPv27dm+fTvjxo2rnp10BJQoRKRG+Oijj8jOzubyyy+nQ4cOdOrUiZde\neinqvNGanNq3b89FF11EnTp1SElJYdSoUXzwwQeAFehbtmxh6tSp1K9fn3r16nHBBRcU//bgwYMM\nGDCAXbt28dZbb3HMMcewbds2/vWvf/Hoo49Sv359mjdvzsiRI5k1a1bx71q1asWwYcOIj4/nmGOO\nqeI9UnXURyEiNcKMGTPo06cPSUlJAFxzzTXMmDGDkSNH+vr9tm3bGDFiBB999BH5+fkUFhbSrFkz\nwJqd2rZtW27H97p161i+fDkLFy4kMdGK1Y0bN3Lw4EFatmxZPF9hYSGpqanF423atDmiba1uShQi\nctT7/vvvefXVVyksLCwumA8cOEBeXh7Lly+PPNqiWNlxgHHjxpGQkMCKFStITk5mzpw5xf0Qbdq0\nYdOmTeV2OJ966qkMGzaMSy+9lP/85z907NiRNm3aUK9ePb777rtyE0y0OMJITU8ictSbM2cOiYmJ\nrF69mmXLlrFs2TJWr15N9+7dmTFjBi1atMD9euXmzZsTHx9fatqePXto2LAhjRs3Jjs7m6lTpxZ/\nd+6559KyZUvGjh3Lvn372L9/P5988kmpGAYMGMDkyZPp3bs3X331FS1btqRPnz6MHj26uIayfv36\n4v6Ro4lqFCJSKQ0aNj+sS1iPZPkVmTlzJjfddBOtW7cuNf2OO+5gxIgRPP3009xxxx3cc8893Hff\nfYwePZrx48fTrVs3CgoKeOedd5gwYQJDhgyhSZMmdOjQgUGDBvHYY48BkJCQwFtvvcXw4cNJTU0l\nLi6OgQMHcsEFFxAXF1dcMxgyZAg//PADvXr1YsGCBcycOZOxY8fSqVMn8vPzOfHEExk7dixAqd+F\nXVijLJr71uygY+C8rt1JSUkJOgyR0NDTY8Ohup8eG9oaRVLdhYGuf8XqHFq2SlWiEJFaL7SJokvn\ndoGuf1vOgUDXLyISFurMFhERT0oUIiLiSYlCREQ8KVGIiIgnJQoREfGkRCEiIp6UKESk1nvyySdp\n0aIFjRs3Jjc3t0qXnZ6ezvPPP1+ly6xuob2PQkSODhMz72VX7o6YLT+5aQoTMn/vOU9aWhrbt28n\nMTGRhIQEOnXqxJAhQ7j11lsrfEzGwYMHGTNmDIsWLeL000+vytCBo+tRHeVRohCRStmVu4Orrjw/\nZst/fc6nFc4TFxfH3Llz6dWrF/n5+WRlZTFixAgWLlzItGnTPH+7detW9u/fz6mnnlpVIVeJgoKC\n4keWB01NTyJSoyQlJdGvXz9eeeUVZsyYwapVqzhw4AB33XUXbdu25fjjj+e3v/0t+/fvZ+3atcUJ\nIjk5md69ewOwZs0aLr74Yo499lhOOeUUXnvtteLl33DDDQwbNoy+ffvSuHFjunbtyldffVX8/Xvv\nvccpp5xCcnIyd955J0VFRaWeyzRt2jQ6depEs2bNuOSSS9i0aVPxd/Hx8TzxxBN06NCBk08+Oda7\nyjclChGpkc455xxat27NggULGDt2LOvWrWPZsmWsW7eO7OxsJk2aRMeOHVm5ciVgr0V9//332bt3\nLxdffDGDBg0iJyeHWbNmcfvtt7N69eriZb/yyitkZmaSm5vLSSedxPjx4wHYsWMHV111FZMnT+a7\n776jffv2fPzxx8VNT2+88QZTpkxh9uzZ7Nixgx49ehzyStU33niDxYsXs2rVqmraUxVTohCRGqtV\nq1bs3LmTZ599lkceeYTk5GQaNWpERkZG8StJyz6Fde7cubRr146hQ4cSHx/PWWedRf/+/UvVKvr3\n70+XLl1ISEhg4MCBLF26FIC3336b008/nf79+5OQkMDIkSM5/vjji3/31FNPkZGRwcknn0x8fDwZ\nGRksXbqUzZs3F8+TkZFBcnIy9erVi+WuOSzhaAATEYmB7OxsCgoK2LdvH2effXbx9KKiIgoLC6P+\nZuPGjSxcuJCmTZsWTysoKGDIkCGA9Ye0aNGi+Lv69euzZ88eAL799ttD3onhft3pxo0bGTFiBGPG\njDkkzsh8YXw9qmoUIlIjLV68mOzsbK688krq16/PqlWryM3NJTc3l127drF79+6ov0tNTaVnz57F\n8+bm5pKfn89f//rXCtfZqlWrUrWDoqKiUuOpqak888wzpZa9d+9eunbtWjxPGK+QUqIQkRoh0oS0\ne/du5s6dy/XXX8/gwYM588wzueWWWxg5ciQ5OTmAncHPmzcv6nL69u3L2rVrefHFFzl48CAHDx5k\n8eLFrFmzptR6ornssstYuXIls2fPpqCggMcff5ytW7cWf3/bbbcxefLk4v6HvLy8Uk1aYaWmJxGp\nlOSmKb4uYa3M8v3o168fiYmJxMfHc9pppzFmzBhuu+02AP7whz8wadIkunbtyo4dOzjhhBO4/fbb\n6dOnD1D6LL5Ro0bMmzeP0aNHM3r0aAoLCznrrLN45JFHiucte9YfGU9JSeG1115j+PDh3HjjjQwe\nPJju3bsXz3fllVeyZ88eBgwYwMaNG2nSpAl9+vThmmuuOSSOMAkqqgxgEFAIfAncCLjfFFS0N+fp\nIOIq9s9319D+1EF07tw50DhEwkSvQg2H6n4VahBNT2nALUBn4AwgARgQQBwiIuJDEE1Pu4GDQAPg\nR+dvdgBxiIiID0HUKHYCDwObgG+BXcD7AcQhIiI+BFGjaA+MxJqg8oDXgIHAS+6ZHnjoreLhHt06\n8rNu4bmdXUQkDLKyssjKyor5eoLozL4OuBj4tTM+GOgKDHPNo85skRBSZ3Y41IbO7DVYYqiPbVBv\nIDwPNRERkVKCaHpaBswEPsMuj/0CeCaAOETkMDVt2jS01/rXJu7Hi1SHoG64e8j5iMhRZOfOnUGH\nIAHQIzxERMSTEoWIiHhSohAREU9KFCIi4kmJQkREPClRiIiIJyUKERHxpEQhIiKelChERMSTEoWI\niHhSohAREU9KFCIi4kmJQkREPClRiIiIJyUKERHxpEQhIiKelChERMSTEoWIiHhSohAREU9+EsW1\nQGNn+D5gNtA5ZhGJiEio+EkU9wG7ge7ARcDzwJOxDEpERMLDT6L40fnbF3gWmAvUjVlEIiISKn4S\nRTbwDHAd8E/gGJ+/ExGRGsBvH8U7QB9gF9AUuDuWQYmISHj4SRR7gRysjwKgAFgXs4hERCRU/CSK\nTOAeIMMZrwu8EKuAREQkXPwkil8CV2A1C7A+i6SYRSQiIqHiJ1EcAApd4w1jFIuIiISQn0TxGvA0\nkAzcCvwbeC6WQYmISHgk+phnKnbFUz7QEbsB771YBiUiIuHhJ1EAzHM+IiJSy3glij1AUTnfFVHy\n/CcREanBvBJFo2qLQkREQstPZ3a0eyZ0H4WISC3hJ1GcXmY8ETg7BrGIiEgIeSWKcdiVTmc4fyOf\n7cCblVxvMvAPYDWwCuhayeWJiEiMeCWKydgd2FOdv5FPM2BsJdf7J+Bt4FTgTCxhiIhICPlpejov\nyrR/V2KdTYAewDRnvADIq8TyREQkhryueqoPNABSsFpERGPghEqssx32NNq/AT8BPgdGAPsqsUwR\nEYkRrxrFb4DPgJOxwjzyeRP4SyXWmYi9c/sJ5+9eKt+UJSIiMeJVo3jM+QwHHq/CdX7jfBY74/8g\nSqJ44KG3iod7dOvIz7qdXIUhHD2mTB7Pvr05QYdBg4bNyRj3QNBhiIhLVlYWWVlZMV+Pn0d4PI5d\nItsJew1qxMwjXOdWYDP23Ki1QG9gZdmZxt/T7wgXX7Ps25tDxqguQYfBlEc/CzoEESkjPT2d9PT0\n4vGJEyfGZD1+EkUm0BM4DXtn9qXARxx5ogC4E3gJewnSeuDGSixLRERiyE+iuBrrdP4CK9BbYIV8\nZSwDzqnkMkREpBr4uTz2e+BH7DLWJtgNd21iGZSIiISHnxrFYqAp8Cx2FdRe4JNYBiUiIuHhJ1Hc\n7vx9CngHu49iecwiEhGRUPGTKOKA/kB37D0UH6JEISJSa/jpo3gCu/luObDCGX4ilkGJiEh4+KlR\nXIjdQ1HojE/HnvgqIiK1gJ8axTog1TWe6kwTEZFawKtGEXmGRhL2GPBFWB/FuZQ8fkNERGo4r0Tx\nsPO3COvQdiuKTTgiIhI2Xokiq7qCEBGR8PLTRyEiIrWYEoWIiHjyShSR150+VB2BiIhIOHn1UbQE\nLgAuB2ZhHdruTuwvYhiXiIiEhFeimADcj70f++Eo318Yk4hERCRUvBLFa87nfmBS9YQjIiJh4+cR\nHpOAK4CfYU1PH1ByM56IiNRwfq56ehAYjr3XerUzPCWWQYmISHj4qVH8AjgLe8sd2EMBlwIZMYpJ\nRERCxE+NoghIdo0no0d4iIjUGn5qFFOwS2HnY5fI9gTGxjIoEREJDz+J4mWsA/scrCYxFtgSy6BE\nRCQ8/CQKgG+BN2IZiIiIhJOe9SQiIp6UKERExFNFiSIR+N/qCERERMKpokRRAKwB2lZDLCIiEkJ+\nOrObYXdlLwL2OtOKsKfKiohIDecnUdwXZZpuuBMRqSX8JIosIA04CXgfaODzdyIiUgP4uerpVuxx\n4087462B2TGLSEREQsVPohgGdAd2O+NrgeNiFpGIiISKn0RxwPlEJKI+ChGRWsNPovgAGI/1TVyM\nNUPpxUUiIrWEn0QxFsgBvgR+A7wN3BvLoEREJDz8XL30IzADWIg1Oa1BTU8iIrWGnxrFL4B1wOPA\nn4H1wGVVsO4EYAlqxhIRCTU/NYpHgAuxZAHQHmt+eruS6x4BrAKSKrkcERGJIT81it2UJAmAryi5\nVPZItcZqJc9hb80TEZGQ8qpRXOX8/QyrPbzqjF/jTKuMR4G7gcaVXI6IiMSYV6LoR0mn9XbsXdlg\nV0AdU4l19nWWtwRIL2+mjPtfqcQqKu+b7N38akg3OnfuHGgcIiJB80oUN8RonRdgT569DEs4jYGZ\nwBD3TLm5+cXDPzn9BH5yxgkxCie62XNXsH///mpdp4jI4cjKyiIrKyvm6/HTmX0icCf2YMDI/JV5\nzPg45wNWS7mLMkkC4MZBXY9w8VVEPSciEnLp6emkp6cXj0+cODEm6/GTKOZgnc5vAYXOtKq8j0L3\nZIiIhJifRLEfu4ciFj5wPiIiElJ+EsWfgUzgXUo/HPCLWAQkIiLh4idRnAYMxm66K3RNvzAmEYmI\nSKj4SRTXAO2AH2Ici4iIhJCfO7O/BJrGOhAREQknPzWKptgTYxdT0kdRmctjRUTkKOInUUyIeRQi\nIhJafhJFVqyDEBGR8PKTKPZQclNcXaCOM00P9BMRqQX8JIpGruF4rG8i4OdriIhIdfFz1ZNbIfZI\nj0tiEIuIiISQnxrFVa7heOBs4PvYhCMiImHjJ1G430tRAGwArohVQCIiEi5+EsUNsQ5CRETCyytR\nlHf/RKR2MamKYxERkRDyShR7OfRdEQ2Bm4EUlChERGoFr0TxR9dwY2A4cCMwC3g4lkGJiEh4VNRH\ncSwwChiIvde6M5Ab66BERCQ8KqpR/BJ4BjgTyK+WiEREJFS8EsVo7B0U9zoftyJqwSM8/jn3Vdas\nCvZNrV8u/wLoEmgMYTEx81525e4IOgySm6YwIfP3QYchUm28EsXh3rVd4xT8kE/GqF8EGsO1gz8J\ndP1hsit3B1ddeX7QYfD6nE+DDkGkWtX6ZCAiIt6UKERExJMShYiIeFKiEBERT0oUIiLiSYlCREQ8\nKVGIiIgnJQoREfGkRCEiIp6UKERExJMShYiIeFKiEBERT0oUIiLiSYlCREQ8KVGIiIgnJQoREfEU\nRKJoA8wHVgIrgOEBxCAiIj55veEuVg4Co4ClQCPgc+A9YHUAsYiISAWCqFFsxZIEwB4sQbQKIA4R\nEfEh6D6KNOCnwMKA4xARkXIE0fQU0Qj4BzACq1mUMv2lktxx1hkncNaZrasvMsd/123kd/fOqvb1\num3Y+F2g64/45NMvGDXitkBjWLr0C6668vxAY5DSpkwez769OYHG0KBhczLGPRBoDEHJysoiKysr\n5usJKlHUAV4HXgTmRJvhhoHnVWtA0RXSv9/pgUaQ9WE4um5+LPgh8EJ60aJPA12/HGrf3hwyRnUJ\nNIYpj34W6PqDlJ6eTnp6evH4xIkTY7KeIJqe4oDngVXAYwGsX0REDkMQiaIbMAi4EFjifC4JIA4R\nEfEhiKanjwi+E11ERHxSgS0iIp6UKERExJMShYiIeFKiEBERT0oUIiLiSYlCREQ8KVGIiIgnJQoR\nEfGkRCEiIp6UKERExJMShYiIeFKiEBERT0oUIiLiSYlCREQ8KVGIiIgnJQoREfGkRCEiIp6CeMOd\nHIa8vO/53b2zgg6D7dt3Bh2CuEzMvJdduTuCDoPlX34Bo7oEGsPnn3/OfeNvDTQGgAYNm5Mx7oGg\nw4gJJYqQS0yMo3+/04MOg/fnrw46BHHZlbuDq648P+gwWLLkk6BDID7uABkBJyuAKY9+FnQIMaOm\nJxER8aREISIinpQoRETEkxKFiIh4UqIQERFPShQiIuJJiUJERDwpUYiIiCclChER8aREISIinpQo\nRETEkxKFiIh4UqIQERFPShQiIuJJiUJERDwpUYiIiKegEsUlwBrgv8DvAopBRER8CCJRJAB/wZJF\nJ+B64NQA4qg1li7/JugQaowlS/Wmv6q04OP/DToE8SGIRHEusA7YABwEZgFXBBBHrbH0y+ygQ6gx\nlixdE3QINcqHH68NOgTxIYhEcQKw2TX+jTNNRERCKDGAdRb5mWnmy0tiHYenHTv3AnGBxiAiEgZB\nlIRdgUysjwIgAygE/uCaZx3QvnrDEhE56q0HTgo6iKqQiG1MGlAXWIo6s0VEpIxLgf/Fag4ZAcci\nIiIiIiI1iW7G82cDsBxYAixypjUD3gPWAvOAZNf8Gdg+XQP0cU0/G/jS+e5PMY04PKYB27DtjqjK\nfVcPeMWZ/v+BtlUbfuhE25+Z2BWNS5zPpa7vtD+9tQHmAyuBFcBwZ7qOUUcC1hyVBtRB/RdevsYO\nHLeHgHuTuB9gAAAFa0lEQVSc4d8BDzrDnbB9WQfbt+souZBhEXZvC8DblFxkUJP1AH5K6YKtKvfd\n7cATzvB12L1CNVm0/TkBGB1lXu3Pih0PnOUMN8Ka6U9Fx2ix84F3XONjnY8c6mvg2DLT1gAtnOHj\nnXGwsw137ewd7OqzloD7VuMBwFNVHmk4pVG6YKvKffcOcJ4znAjkVFXQIZbGoYliTJT5tD8P3xyg\nNwEeo2F7KKBuxvOvCHgf+Ay4xZnWAmsCwPkbOahaYfsyIrJfy07Ppvbu76rcd+7juADI49DaX21w\nJ7AMeJ6SZhLtz8OThtXWFhLgMRq2ROHrZjwBoBt2AF0KDMOq/25FaH8eKe27ynsSaIc1oWwBHg42\nnKNSI+B1YASQX+a7aj1Gw5YosrGOnIg2lM6IUmKL8zcHmI21Q27DqqRg1c7tznDZ/doa26/ZzrB7\nem19MFRV7LtvXL9JdYYTgSbAzqoPOdS2U1KYPUdJO7n2pz91sCTxAtb0BAEeo2FLFJ8BHSi5Ge86\n4M0gAwqpBkCSM9wQu8rhS2xfDXWmD6XkAHsTa5+si53ldcA6ubYCu7G2yjhgsOs3tU1V7Ls3oizr\nauDfMY49jFq6hn9JSf+F9mfF4rDmulXAY67pOkZddDNexdphVzksxS6fi+ynZli/RbTL58Zh+3QN\n8HPX9Mjlc+uAx2MadXi8DHwL/IC1095I1e67esCrlFx6mBaDbQiTsvvzJmAmdvn2MqxAa+GaX/vT\nW3fssUZLKbm8+BJ0jIqIiIiIiIiIiIiIiIiIiIiIiIiIiIjUJIXAH13jd2EPlqsK04GrqmhZXq7B\nbpIqe/NSW+D6ali/SEyE7c5sqb1+wO7gjTwRtyqfY1OZZSUexrw3A78GLiozvR3wqypYvkgglCgk\nLA4CzwCjonw3ndI1gj3O33TgA+zO3/XY8/kHY48vWA6c6PpNb2Axdtf/L5xpCcBUZ/5lwK2u5X6I\nPe5gZZR4rneW/yUl7wS4H3tQ4zTsvQFuD2IPbVwCjMQenfAmVvN4D2jqbMMy4FPgDOd3zcqZnok9\nA+gT7C7dXzvTWwILnPV8id3hKyJSY+Rjz6/6GmiMvcsg0vT0N0onisiTNNOBXOzxEHWxB51lOt8N\nBx51hqdjL20BOAl7zEQ9LDGMd6bXwxJJmrPcPUR/61crYCNW80nACvsrnO/mA52j/KYn8JZr/AYn\nhsgjGP4M3OcMX4gV9F7TM53hek4cm7AkMQZ7lAPYs30aRYlF5LCp2ithko89I2g48L3P3yym5Bn9\n64B3neEVWOEK1vT0qmuer4BTsIcpnoE9FA0sQZ2EPZ9/EZYQyjoHSwjfOeMvAT+j5GFrcVF+U3Za\nEVaT2OWMdwP6O8PzscI/yWN6kbO+A85nPvZ01kVYjaYOJTURkUpT05OEzWNYW39D17QCSo7VeKz2\nEHHANVzoGi/E+0Qo0m9xB/Zej58C7bGHrgHs9fidu+CPo3QfiN/+kLLLj5ZgvKaXVYg1l/XAalbT\nsWY4kUpTopCwycXO/m+mpNDdgD0FE+By7Iz5cMRhVyTFYcngROwpm+9i7w6OJJSO2CPcvSzGmpIi\nTU8DsH4SL7speSx8JB63D4GBznA69o6RfI/pcVhzV6TpKd2JK9WZ5znn89MK4hLxRU1PEhbuM/GH\nsTP9iGexppal2Lt+95Tzu7LLK3INb8KaZhoDv8GusnoO65P4Ait8t2NXXnm9PWwL9h73+c5v5lK6\n/yGa5cCPTvzTsWToXn4m1mS0DKtpDK1gepGzzPlACjAJe/fAEOBu7MKAfGdcRERqoQlYx7VItVDT\nk8jRSe/0FhERERERERERERERERERERERERERETl8/wdefJdzOVauoQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 87 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Make plot with fixed number of bins" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Make two variables of the attacker and defender size, but leaving out\n", "# cases when there are over 10000 attackers\n", "data1 = df['attacker_size'][df['attacker_size'] < 90000]\n", "data2 = df['defender_size'][df['attacker_size'] < 90000]\n", "\n", "# Create 10 bins with the minimum \n", "# being the smallest value of data1 and data2 \n", "bins = np.linspace(min(data1 + data2), \n", " # the max being the highest value\n", " max(data1 + data2),\n", " # and divided into 10 bins\n", " 10)\n", "\n", "# Plot a histogram of attacker size\n", "plt.hist(data1, \n", " # with bins defined as\n", " bins=bins, \n", " # with alpha\n", " alpha=0.5, \n", " # with color\n", " color='#EDD834',\n", " # labelled attacker\n", " label='Attacker')\n", "\n", "# Plot a histogram of defender size\n", "plt.hist(data2, \n", " # with bins defined as\n", " bins=bins, \n", " # with alpha\n", " alpha=0.5, \n", " # with color\n", " color='#887E43',\n", " # labeled defender\n", " label='Defender')\n", "\n", "# Set the x and y boundaries of the figure\n", "plt.ylim([0, 10])\n", "\n", "# Set the title and labels\n", "plt.title('Histogram of Attacker and Defender Size')\n", "plt.xlabel('Number of troops')\n", "plt.ylabel('Number of battles')\n", "plt.legend(loc='upper right')\n", "\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nY3T/I1/6XnblypXMmTOHjIwM3n77ba6++mrArhKKdbVWmK7g2r9/PykpKUGHEZNSqYjUGFOmTKFX\nr14MHDiQyZMnAzBw4EBWr15N3759SUtLY+LEifTo0QOA9PR00tLSmD17NitWrKBnz540b96cFi1a\nMGDAALZt21a67jVr1tCvXz+OOuoomjdvzl133RUzhnvuuYfu3btTWFjItm3buOWWW2jdujVt2rTh\nvvvuo7i4GLAmq65duzJixAiaN2/OuHHjElw6h06JQkRqjClTpnDttdfys5/9jPfff5/8/HxeeOEF\nMjIymD59OoWFhdxzzz3MmjULgG3btlFYWMi5554LwJgxY1i3bh1LlixhzZo1pSPG7t+/nz59+tC+\nfXtWrVpFXl4e111Xdji7kpISbr31Vr755hs++OAD0tLSuPHGG6lbty4rVqxg3rx5zJgxg2effbb0\nM3PmzKFDhw5s3LiR0aNHV08hHQIlChGpET799FPy8vK4/PLLOf744+nUqRMvvfRSzGVjNTl16NCB\niy66iDp16tC8eXOGDx/Oxx9/DNgBfd26dUycOJH69etTr149zj///NLP7tu3j/79+7N161beeecd\njjjiCDZs2MA///lPHnnkEerXr0+LFi0YNmwYr7zySunnWrduzeDBg0lOTuaII46Ic4nEj/ooRKRG\nmDx5Mr179yYtLQ2Aa665hsmTJzNs2DBfn9+wYQNDhw7l008/pbCwkOLiYpo1awZYs1O7du0q7Phe\nvnw5CxcuZPbs2aSm2mF11apV7Nu3j1atWpUuV1xcTEZGRul027ZtD2lfq5sShYgc9n744Qdee+01\niouLSw/Me/bsYdu2bSxcuPCAIS9iDYExevRoUlJS+Oabb0hPT2fq1Kml/RBt27Zl9erVFXY4n3TS\nSQwePJhLL72Uf/3rX3Ts2JG2bdtSr149Nm/eXGGCqe6hOA6Vmp5E5LA3depUUlNTWbJkCQsWLGDB\nggUsWbKEbt26MXnyZFq2bIn78cotWrQgOTm5zLwdO3bQsGFDGjduTF5eHhMnTix975xzzqFVq1aM\nGjWKXbt2sXv3bj7//PMyMfTv358JEybQq1cvvv32W1q1akXv3r0ZMWJEaQ1lxYoVpf0jhxPVKESk\nSho0bHFQl7AeyvorM2XKFG6++WbatGlTZv6dd97J0KFDeeqpp7jzzju59957ue+++xgxYgRjxoyh\n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\n", "text": [ "" ] } ], "prompt_number": 108 } ], "metadata": {} } ] }