{"cells":[
 {
  "cell_type": "markdown",
  "metadata": {},
  "source": "# Open Boundary Condition\nThe data are generated from a model with open boundary condition as inferred by Hamed.\n\n3D plot grouping the data into rounded off x and y "
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": ""
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits.mplot3d import Axes3D\nplt.rcParams['figure.figsize'] = (16,5)"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "train = pd.read_csv('../input/train.csv', index_col='row_id')"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "train['grid_x'] = train.x.apply(lambda x: round(x))\ntrain['grid_y'] = train.y.apply(lambda y: round(y))\ngrouped_grid = train.groupby(['grid_x', 'grid_y'])\ngrid_freq = grouped_grid.size().reset_index()"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": "fig = plt.figure()\nax1 = fig.add_subplot(111, projection='3d')\n\nxpos = grid_freq.grid_x\nypos = grid_freq.grid_y\nzpos = np.zeros(len(grouped_grid))\n\ndx = np.ones(len(grouped_grid))\ndy = np.ones(len(grouped_grid))\ndz = grid_freq[0]\n\n\n\nax1.bar3d(xpos, ypos, zpos, dx, dy, dz, color='#00ceaa')\n\nplt.show()"
 },
 {
  "cell_type": "code",
  "execution_count": null,
  "metadata": {
   "collapsed": false
  },
  "outputs": [],
  "source": ""
 }
],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}}, "nbformat": 4, "nbformat_minor": 0}