{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Regressão Linear Múltipla com Descida de Gradiente\n", "\n", "No notebook [Regressão Linear Simples com Descida de Gradiente](https://nbviewer.jupyter.org/github/yurimalheiros/ai-notebooks/blob/master/ml/gdlinearregression.ipynb) foi mostrado como funciona a regressão linear\n", "para prever uma resposta (preço de uma casa) a partir de uma variável de entrada (tamanho de uma casa).\n", "\n", "Entretanto, existem diversos casos nos quais temos duas ou mais variáveis de entrada para prever uma resposta. Para isso precisamos de uma abordagem que estenda a Regressão Linear Simples para suportar múltiplas variáveis de entrada." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Neste notebook, além dos dados dos tamanhos das casas para prever os preços, usaremos também o número de quartos. A seguir temos um gráfico tridimensional mostrando cada casa dos dados de treinamento como um ponto de acordo com as três características (tamanho, número de quartos e preço)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "mode": "markers", "type": "scatter3d", "uid": "bac3041c-10c8-4a9e-8477-2f12b005edb6", "x": [ 0.998, 1.5, 1.175, 1.232, 1.121, 0.988, 1.24, 1.501, 1.225, 1.552, 0.975, 1.121, 1.02, 1.501, 1.664, 1.488, 1.376, 1.5, 1.256, 1.69, 1.82, 1.652, 1.777, 1.504, 1.831, 1.2 ], "y": [ 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 3, 4, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3 ], "z": [ 25.9, 29.5, 27.9, 25.9, 29.9, 29.9, 30.9, 28.9, 35.9, 31.5, 31, 30.9, 30, 28.9, 36.9, 41.9, 40.5, 43.9, 37.5, 37.9, 44.5, 37.9, 38.9, 36.9, 45.8, 41 ] } ], "layout": { "height": 400, "margin": { "b": 10, "l": 10, "pad": 10, "r": 10, "t": 10 }, "scene": { "xaxis": { "title": { "text": "tamanho" } }, "yaxis": { "title": { "text": "quartos" } }, "zaxis": { "title": { "text": "preço" } } }, "width": 900 } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import plotly\n", "import plotly.graph_objs as go\n", "plotly.offline.init_notebook_mode()\n", "\n", "sizes = [0.998, 1.500, 1.175, 1.232, 1.121, 0.988, 1.240, 1.501, 1.225, 1.552, 0.975, 1.121, 1.020,\n", " 1.501, 1.664, 1.488, 1.376, 1.500, 1.256, 1.690, 1.820, 1.652, 1.777, 1.504, 1.831, 1.200]\n", "\n", "bedrooms = [4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 3, 4, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3]\n", "\n", "prices = [25.9, 29.5, 27.9, 25.9, 29.9, 29.9, 30.9, 28.9, 35.9, 31.5, 31.0, 30.9, 30.0, 28.9, 36.9,\n", " 41.9, 40.5, 43.9, 37.5, 37.9, 44.5, 37.9, 38.9, 36.9, 45.8, 41.0]\n", "\n", "plot = go.Scatter3d(x=sizes, y=bedrooms, z=prices, mode='markers')\n", "layout = go.Layout(width=900, height=400,\n", " margin=go.layout.Margin(l=10, r=10, b=10, t=10, pad=10),\n", " scene=dict(xaxis=dict(title=\"tamanho\"), yaxis=dict(title=\"quartos\"), zaxis=dict(title=\"preço\")))\n", "\n", "data = [plot]\n", "plotly.offline.iplot({'data': data, 'layout': layout})" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "A Regressão Linear Múltipla é uma generalização da Regressão Linear Simples, que podemos usar para qualquer quantidade de variáveis.\n", "\n", "Diferente da Regressão Linear Simples, na qual foi gerada uma reta para prever o valor de uma casa de acordo com um tamanho, na Regressão Linear Múltipla, como temos três ou mais dimensões, geraremos um plano (ou hiperplano)." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Para entender os próximos passos definiremos algumas notações.\n", "\n", "Cada característica de um exemplo dos dados de treinamento será representada por $x_i$. Nesse caso, $x_1$ é o tamanho da casa e $x_2$ é a quantidade de quartos. Na regressão múltipla podemos ter $N$ características.\n", "\n", "\n", "Com isso, a função que representa o plano para esse exemplo é:\n", "\n", "\\begin{equation*}\n", "f(x) = w_0 + w_1x_1 + w_2x_2\n", "\\end{equation*}\n", "\n", "Generalizando a função para exemplos com $N$ características, temos:\n", "\n", "\\begin{equation*}\n", "f(x) = w_0 + w_1x_1 + ... + w_nx_n\n", "\\end{equation*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "O vetor $x$ vai representar todas as características de uma casa, mas com uma ressalva, ele terá $N+1$ elementos, sendo o primeiro sempre $x_0 = 1$. Isto nos ajudará em cálculos posteriores. Assim:\n", "\n", "$x = \\begin{bmatrix}\n", " x_0 \\\\\n", " x_1 \\\\\n", " ... \\\\\n", " x_n\n", " \\end{bmatrix}$\n", " \n", "Além disso, temos o vetor $w$ que contém todos os coeficientes da função do plano.\n", "\n", "$w = \\begin{bmatrix}\n", " w_0 \\\\\n", " w_1 \\\\\n", " ... \\\\\n", " w_n\n", " \\end{bmatrix}$\n", " \n", "\n", "Representando os dados das casas e os coeficientes como vetores, podemos simplificar a função escrevendo da seguinte forma:\n", "\n", "$f(x) = w^Tx$\n", "\n", "Onde $w^T$ é a matriz transposta de $w$.\n", "\n", "Efetuando a multiplicação $w^Tx$ temos: $w_0x_0 + w_1x_1 + ... + w_nx_n$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Abaixo temos a implementação para calcular o resultado da função de acordo com os vetores $x$ e $w$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n" ] } ], "source": [ "def f(x, w):\n", " result = 0\n", " for i in range(len(x)):\n", " result += x[i]*w[i]\n", " \n", " return result\n", "\n", "print(f([1,3,-1], [1,1,2]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Além disso, precisamos especificar a qual exemplo pertence uma característica.\n", "Para isso usaremos a notação $x_j^{(i)}$ para representar a característica $x_j$ da i-ésima casa.\n", "Por exemplo, o tamanho da quinta casa nos dados de treinamento é representado por $x_1^{(5)}$, já a quantidade de quartos da terceira casa é representada por $x_2^{(3)}$. Dessa forma, o vetor de características da i-ésima casa será representado por $x^{(i)}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como na Regressão Linear Simples, a função resultante ideal na Regressão Linear Múltipla é a que minimiza a função de erro médio quadrático $\\frac{1}{2m} \\sum_{i=1}^{m} (f(x^{(i)}) - y^{(i)})^2$, onde $m$ é a quantidade de exemplos nos dados de treinamento.\n", "\n", "Escrevendo ela em função de $w$, temos:\n", "\n", "\\begin{equation*}\n", "J(w) = \\frac{1}{2m} \\sum_{i=1}^{m} (w^Tx^{(i)} - y^{(i)})^2\n", "\\end{equation*}\n", "\n", "O código para esse cálculo pode ser visto abaixo. Na função implementada são passados todos os dados dos tamanhos, números de quartos e preços das casas, além do vetor $w$ com os coeficientes da função." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def squared_error(sizes, bedrooms, prices, w):\n", " total = 0\n", "\n", " for i in range(len(sizes)):\n", " x1, x2, y = sizes[i], bedrooms[i], prices[i]\n", " yi = f([x1, x2], w)\n", " error = (yi - y)**2\n", "\n", " total += error\n", "\n", " return total/(2*len(sizes))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Novamente, para encontrar o valor mínimo de $J(w)$ utilizaremos o algoritmo da descida de gradiente.\n", "\n", "Na Regressão Linear Simples tínhamos duas regras para atualizar $w_0$ e $w_1$ utilizando derivadas parciais.\n", "Entretanto, podemos generalizar o cálculo das derivadas parciais para qualquer quantidade de coeficientes.\n", "\n", "\\begin{equation*}\n", "\\frac{\\partial}{\\partial w_j} J(w) = \\frac{1}{m} \\sum_{i=1}^{m} (f(x^{(i)}) - y^{(i)})x_j^{(i)}\n", "\\end{equation*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como convencionamos que $x_0^{(i)}$ é sempre igual a 1, então $\\frac{\\partial}{\\partial w_0} J(w)$ vai ser igual ao que calculamos na Regressão Linear Simples, assim como $\\frac{\\partial}{\\partial w_1} J(w)$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As derivadas podem ser calculadas usando o código a seguir. Na função são passados todos os dados dos tamanhos, números de quartos e preços das casas, o vetor $w$ e o índice $j$ para especificar qual derivada parcial está sendo calculada." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def d_error(sizes, bedrooms, prices, w, j_index):\n", " total = 0\n", "\n", " for i in range(len(sizes)):\n", " x1, x2, y = sizes[i], bedrooms[i], prices[i]\n", " xij = [1, sizes[i], bedrooms[i]][j_index]\n", " yi = f([x1, x2], w)\n", " error = (yi - y)\n", "\n", " total += error*xij\n", "\n", " return total/(len(sizes))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Com isso, podemos resumir a atualização dos pesos nas iterações do algoritmo de descida de gradiente para Regressão Múltipla assim:\n", "\n", "\\begin{equation*}\n", "w_j := w_j - \\alpha \\frac{\\partial}{\\partial w_j} J(w)\n", "\\end{equation*}\n", "\n", "ou seja\n", "\n", "\\begin{equation*}\n", "w_j := w_j - \\alpha \\frac{1}{m} \\sum_{i=1}^{m} (f(x^{(i)}) - y^{(i)})x_j^{(i)}\n", "\\end{equation*}\n", "\n", "onde $j$ varia de 0 até $N$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vamos agora fazer atualizações dos coeficientes até o erro médio quadrático não diminuir pelo menos 0.000001." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean squared error: 14.08053985116923\n", "f(x) = -131.7521267287713x_2 + 2.0491315215998336x_1 + 20.167629801043585\n" ] } ], "source": [ "import random\n", "\n", "w0 = random.uniform(-2, 2)\n", "w1 = random.uniform(-2, 2)\n", "w2 = random.uniform(-2, 2)\n", "alpha = 0.01\n", "\n", "coefficients = [(w0, w1, w2)]\n", "errors = [squared_error(sizes, bedrooms, prices, coefficients[-1])]\n", "\n", "while True:\n", " w = coefficients[-1]\n", " w0i = w0 - alpha*d_error(sizes, bedrooms, prices, w, 0)\n", " w1i = w1 - alpha*d_error(sizes, bedrooms, prices, w, 1)\n", " w2i = w2 - alpha*d_error(sizes, bedrooms, prices, w, 2)\n", "\n", " w0 = w0i\n", " w1 = w1i\n", " w2 = w2i\n", " \n", " coefficients.append((w0, w1, w2))\n", " errors.append(squared_error(sizes, bedrooms, prices, coefficients[-1]))\n", " \n", " if (abs(errors[-2] - errors[-1]) < 0.000001):\n", " break\n", "\n", "print(\"Mean squared error: {}\".format(squared_error(sizes, bedrooms, prices, coefficients[-1])))\n", "print(\"f(x) = {}x_2 + {}x_1 + {}\".format(w2, w1, w0))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Usando a função encontrada, vamos visualizar o plano que ela representa:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "marker": { "line": { "color": "rgba(217, 217, 217, 0.14)", "width": 0.5 }, "opacity": 0.8, "size": 12 }, "mode": "markers", "type": "scatter3d", "uid": "78d3b5db-e989-46c6-adf8-8ccf9c4ab425", "x": [ 0.998, 1.5, 1.175, 1.232, 1.121, 0.988, 1.24, 1.501, 1.225, 1.552, 0.975, 1.121, 1.02, 1.501, 1.664, 1.488, 1.376, 1.5, 1.256, 1.69, 1.82, 1.652, 1.777, 1.504, 1.831, 1.2 ], "y": [ 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 3, 4, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3 ], "z": [ 25.9, 29.5, 27.9, 25.9, 29.9, 29.9, 30.9, 28.9, 35.9, 31.5, 31, 30.9, 30, 28.9, 36.9, 41.9, 40.5, 43.9, 37.5, 37.9, 44.5, 37.9, 38.9, 36.9, 45.8, 41 ] }, { "showscale": false, "type": "surface", "uid": "7f023326-d053-403f-9886-cb82c6d25279", "x": [ 1, 1.0204081632653061, 1.0408163265306123, 1.0612244897959184, 1.0816326530612246, 1.1020408163265305, 1.1224489795918366, 1.1428571428571428, 1.163265306122449, 1.183673469387755, 1.2040816326530612, 1.2244897959183674, 1.2448979591836735, 1.2653061224489797, 1.2857142857142856, 1.3061224489795917, 1.3265306122448979, 1.346938775510204, 1.3673469387755102, 1.3877551020408163, 1.4081632653061225, 1.4285714285714286, 1.4489795918367347, 1.4693877551020407, 1.489795918367347, 1.510204081632653, 1.530612244897959, 1.5510204081632653, 1.5714285714285714, 1.5918367346938775, 1.6122448979591835, 1.6326530612244898, 1.6530612244897958, 1.6734693877551021, 1.693877551020408, 1.7142857142857142, 1.7346938775510203, 1.7551020408163265, 1.7755102040816326, 1.7959183673469385, 1.816326530612245, 1.8367346938775508, 1.8571428571428572, 1.8775510204081631, 1.8979591836734693, 1.9183673469387754, 1.9387755102040816, 1.9591836734693877, 1.9795918367346939, 2 ], "y": [ 2, 2.0408163265306123, 2.0816326530612246, 2.122448979591837, 2.163265306122449, 2.204081632653061, 2.2448979591836733, 2.2857142857142856, 2.326530612244898, 2.36734693877551, 2.4081632653061225, 2.4489795918367347, 2.489795918367347, 2.5306122448979593, 2.571428571428571, 2.6122448979591835, 2.6530612244897958, 2.693877551020408, 2.7346938775510203, 2.7755102040816326, 2.816326530612245, 2.857142857142857, 2.8979591836734695, 2.9387755102040813, 2.979591836734694, 3.020408163265306, 3.061224489795918, 3.1020408163265305, 3.142857142857143, 3.183673469387755, 3.224489795918367, 3.2653061224489797, 3.3061224489795915, 3.3469387755102042, 3.387755102040816, 3.4285714285714284, 3.4693877551020407, 3.510204081632653, 3.5510204081632653, 3.591836734693877, 3.63265306122449, 3.6734693877551017, 3.7142857142857144, 3.7551020408163263, 3.7959183673469385, 3.836734693877551, 3.877551020408163, 3.9183673469387754, 3.9591836734693877, 4 ], "z": [ [ 24.265892844243254, 24.34953086553304, 24.43316888682283, 24.51680690811262, 24.600444929402407, 24.684082950692197, 24.767720971981987, 24.851358993271777, 24.934997014561567, 25.018635035851354, 25.102273057141144, 25.185911078430934, 25.26954909972072, 25.35318712101051, 25.4368251423003, 25.520463163590087, 25.604101184879877, 25.687739206169667, 25.771377227459457, 25.855015248749247, 25.938653270039033, 26.022291291328823, 26.105929312618613, 26.1895673339084, 26.273205355198193, 26.35684337648798, 26.44048139777777, 26.52411941906756, 26.607757440357346, 26.691395461647137, 26.775033482936927, 26.858671504226717, 26.942309525516503, 27.025947546806293, 27.109585568096083, 27.193223589385873, 27.27686161067566, 27.36049963196545, 27.44413765325524, 27.527775674545026, 27.611413695834816, 27.695051717124606, 27.778689738414396, 27.862327759704183, 27.945965780993973, 28.029603802283763, 28.113241823573553, 28.19687984486334, 28.28051786615313, 28.36415588744292 ], [ 24.677477125897205, 24.76111514718699, 24.84475316847678, 24.92839118976657, 25.01202921105636, 25.09566723234615, 25.17930525363594, 25.26294327492573, 25.34658129621552, 25.430219317505305, 25.513857338795095, 25.597495360084885, 25.68113338137467, 25.76477140266446, 25.84840942395425, 25.932047445244038, 26.015685466533828, 26.099323487823618, 26.182961509113408, 26.266599530403198, 26.350237551692985, 26.433875572982775, 26.517513594272565, 26.60115161556235, 26.684789636852145, 26.76842765814193, 26.85206567943172, 26.93570370072151, 27.019341722011298, 27.102979743301088, 27.186617764590878, 27.270255785880668, 27.353893807170454, 27.437531828460244, 27.521169849750034, 27.604807871039824, 27.68844589232961, 27.7720839136194, 27.85572193490919, 27.939359956198977, 28.022997977488767, 28.106635998778557, 28.190274020068347, 28.273912041358134, 28.357550062647924, 28.441188083937714, 28.524826105227504, 28.60846412651729, 28.69210214780708, 28.77574016909687 ], [ 25.089061407551156, 25.172699428840943, 25.256337450130733, 25.339975471420523, 25.42361349271031, 25.5072515140001, 25.59088953528989, 25.67452755657968, 25.75816557786947, 25.841803599159256, 25.925441620449046, 26.009079641738836, 26.092717663028623, 26.176355684318413, 26.259993705608203, 26.34363172689799, 26.42726974818778, 26.51090776947757, 26.59454579076736, 26.67818381205715, 26.761821833346936, 26.845459854636726, 26.929097875926516, 27.012735897216302, 27.096373918506096, 27.180011939795882, 27.263649961085672, 27.347287982375462, 27.43092600366525, 27.51456402495504, 27.59820204624483, 27.68184006753462, 27.765478088824405, 27.849116110114196, 27.932754131403986, 28.016392152693776, 28.100030173983562, 28.183668195273352, 28.267306216563142, 28.35094423785293, 28.43458225914272, 28.51822028043251, 28.6018583017223, 28.685496323012085, 28.769134344301875, 28.852772365591665, 28.936410386881455, 29.02004840817124, 29.103686429461032, 29.187324450750822 ], [ 25.500645689205108, 25.584283710494894, 25.667921731784684, 25.751559753074474, 25.83519777436426, 25.91883579565405, 26.00247381694384, 26.08611183823363, 26.16974985952342, 26.253387880813207, 26.337025902102997, 26.420663923392787, 26.504301944682574, 26.587939965972364, 26.671577987262154, 26.75521600855194, 26.83885402984173, 26.92249205113152, 27.00613007242131, 27.0897680937111, 27.173406115000887, 27.257044136290677, 27.340682157580467, 27.424320178870254, 27.507958200160047, 27.591596221449834, 27.675234242739624, 27.758872264029414, 27.8425102853192, 27.92614830660899, 28.00978632789878, 28.09342434918857, 28.177062370478357, 28.260700391768147, 28.344338413057937, 28.427976434347727, 28.511614455637513, 28.595252476927303, 28.678890498217093, 28.76252851950688, 28.84616654079667, 28.92980456208646, 29.01344258337625, 29.097080604666036, 29.180718625955826, 29.264356647245616, 29.347994668535407, 29.431632689825193, 29.515270711114983, 29.598908732404773 ], [ 25.91222997085906, 25.995867992148845, 26.079506013438635, 26.163144034728425, 26.246782056018212, 26.330420077308002, 26.414058098597792, 26.497696119887582, 26.581334141177372, 26.66497216246716, 26.74861018375695, 26.83224820504674, 26.915886226336525, 26.999524247626315, 27.083162268916105, 27.16680029020589, 27.25043831149568, 27.33407633278547, 27.41771435407526, 27.50135237536505, 27.584990396654838, 27.66862841794463, 27.75226643923442, 27.835904460524205, 27.919542481814, 28.003180503103785, 28.086818524393575, 28.170456545683365, 28.25409456697315, 28.33773258826294, 28.42137060955273, 28.50500863084252, 28.588646652132308, 28.672284673422098, 28.755922694711888, 28.839560716001678, 28.923198737291465, 29.006836758581255, 29.090474779871045, 29.17411280116083, 29.25775082245062, 29.34138884374041, 29.4250268650302, 29.508664886319988, 29.592302907609778, 29.675940928899568, 29.759578950189358, 29.843216971479144, 29.926854992768934, 30.010493014058724 ], [ 26.323814252513003, 26.407452273802793, 26.491090295092583, 26.574728316382373, 26.658366337672163, 26.74200435896195, 26.82564238025174, 26.90928040154153, 26.992918422831316, 27.076556444121106, 27.160194465410896, 27.243832486700686, 27.327470507990476, 27.411108529280263, 27.494746550570053, 27.578384571859843, 27.66202259314963, 27.74566061443942, 27.82929863572921, 27.912936657019, 27.99657467830879, 28.080212699598576, 28.163850720888366, 28.247488742178156, 28.331126763467942, 28.414764784757732, 28.498402806047523, 28.58204082733731, 28.6656788486271, 28.74931686991689, 28.832954891206676, 28.91659291249647, 29.000230933786256, 29.083868955076046, 29.167506976365836, 29.251144997655622, 29.334783018945412, 29.418421040235202, 29.502059061524992, 29.58569708281478, 29.66933510410457, 29.75297312539436, 29.83661114668415, 29.920249167973935, 30.003887189263725, 30.087525210553515, 30.171163231843305, 30.254801253133095, 30.338439274422882, 30.422077295712672 ], [ 26.735398534166954, 26.819036555456744, 26.902674576746534, 26.986312598036324, 27.069950619326114, 27.1535886406159, 27.23722666190569, 27.32086468319548, 27.404502704485267, 27.488140725775057, 27.571778747064847, 27.655416768354637, 27.739054789644428, 27.822692810934214, 27.906330832224004, 27.989968853513794, 28.07360687480358, 28.15724489609337, 28.24088291738316, 28.32452093867295, 28.40815895996274, 28.491796981252527, 28.575435002542317, 28.659073023832107, 28.742711045121894, 28.826349066411684, 28.909987087701474, 28.99362510899126, 29.07726313028105, 29.16090115157084, 29.244539172860627, 29.32817719415042, 29.411815215440207, 29.495453236729997, 29.579091258019787, 29.662729279309573, 29.746367300599363, 29.830005321889153, 29.913643343178943, 29.99728136446873, 30.08091938575852, 30.16455740704831, 30.2481954283381, 30.331833449627887, 30.415471470917677, 30.499109492207467, 30.582747513497257, 30.666385534787047, 30.750023556076833, 30.833661577366623 ], [ 27.146982815820905, 27.230620837110695, 27.314258858400486, 27.397896879690276, 27.481534900980066, 27.565172922269852, 27.648810943559642, 27.732448964849432, 27.81608698613922, 27.89972500742901, 27.9833630287188, 28.06700105000859, 28.15063907129838, 28.234277092588165, 28.317915113877955, 28.401553135167745, 28.48519115645753, 28.568829177747322, 28.652467199037112, 28.736105220326902, 28.819743241616692, 28.90338126290648, 28.98701928419627, 29.07065730548606, 29.154295326775845, 29.237933348065635, 29.321571369355425, 29.40520939064521, 29.488847411935, 29.57248543322479, 29.656123454514578, 29.73976147580437, 29.823399497094158, 29.907037518383948, 29.990675539673738, 30.074313560963525, 30.157951582253315, 30.241589603543105, 30.325227624832895, 30.40886564612268, 30.49250366741247, 30.57614168870226, 30.65977970999205, 30.743417731281838, 30.827055752571628, 30.910693773861418, 30.994331795151208, 31.077969816440998, 31.161607837730784, 31.245245859020574 ], [ 27.558567097474857, 27.642205118764647, 27.725843140054437, 27.809481161344227, 27.893119182634017, 27.976757203923803, 28.060395225213593, 28.144033246503383, 28.22767126779317, 28.31130928908296, 28.39494731037275, 28.47858533166254, 28.56222335295233, 28.645861374242116, 28.729499395531906, 28.813137416821696, 28.896775438111483, 28.980413459401273, 29.064051480691063, 29.147689501980853, 29.231327523270643, 29.31496554456043, 29.39860356585022, 29.48224158714001, 29.565879608429796, 29.649517629719586, 29.733155651009376, 29.816793672299163, 29.900431693588953, 29.984069714878743, 30.06770773616853, 30.151345757458323, 30.23498377874811, 30.3186218000379, 30.40225982132769, 30.485897842617476, 30.569535863907266, 30.653173885197056, 30.736811906486846, 30.820449927776632, 30.904087949066422, 30.987725970356212, 31.071363991646002, 31.15500201293579, 31.23864003422558, 31.32227805551537, 31.40591607680516, 31.48955409809495, 31.573192119384736, 31.656830140674526 ], [ 27.970151379128808, 28.053789400418598, 28.137427421708388, 28.221065442998178, 28.304703464287968, 28.388341485577754, 28.471979506867545, 28.555617528157335, 28.63925554944712, 28.72289357073691, 28.8065315920267, 28.89016961331649, 28.97380763460628, 29.057445655896068, 29.141083677185858, 29.224721698475648, 29.308359719765434, 29.391997741055224, 29.475635762345014, 29.559273783634804, 29.642911804924594, 29.72654982621438, 29.81018784750417, 29.89382586879396, 29.977463890083747, 30.061101911373537, 30.144739932663327, 30.228377953953114, 30.312015975242904, 30.395653996532694, 30.47929201782248, 30.562930039112274, 30.64656806040206, 30.73020608169185, 30.81384410298164, 30.897482124271427, 30.981120145561217, 31.064758166851007, 31.148396188140797, 31.232034209430584, 31.315672230720374, 31.399310252010164, 31.482948273299954, 31.56658629458974, 31.65022431587953, 31.73386233716932, 31.81750035845911, 31.9011383797489, 31.984776401038687, 32.06841442232847 ], [ 28.38173566078276, 28.46537368207255, 28.54901170336234, 28.63264972465213, 28.71628774594192, 28.799925767231706, 28.883563788521496, 28.967201809811286, 29.050839831101072, 29.134477852390862, 29.218115873680652, 29.301753894970442, 29.385391916260232, 29.46902993755002, 29.55266795883981, 29.6363059801296, 29.719944001419385, 29.803582022709175, 29.887220043998965, 29.970858065288756, 30.054496086578546, 30.138134107868332, 30.221772129158122, 30.305410150447912, 30.3890481717377, 30.47268619302749, 30.55632421431728, 30.639962235607065, 30.723600256896855, 30.807238278186645, 30.89087629947643, 30.974514320766225, 31.05815234205601, 31.1417903633458, 31.225428384635592, 31.30906640592538, 31.39270442721517, 31.47634244850496, 31.55998046979475, 31.643618491084535, 31.727256512374325, 31.810894533664115, 31.894532554953905, 31.97817057624369, 32.061808597533485, 32.14544661882327, 32.22908464011306, 32.31272266140285, 32.39636068269264, 32.47999870398243 ], [ 28.79331994243671, 28.8769579637265, 28.96059598501629, 29.04423400630608, 29.12787202759587, 29.211510048885657, 29.295148070175447, 29.378786091465237, 29.462424112755023, 29.546062134044814, 29.629700155334604, 29.713338176624394, 29.796976197914184, 29.88061421920397, 29.96425224049376, 30.04789026178355, 30.131528283073337, 30.215166304363127, 30.298804325652917, 30.382442346942707, 30.466080368232497, 30.549718389522283, 30.633356410812073, 30.716994432101863, 30.80063245339165, 30.88427047468144, 30.96790849597123, 31.051546517261016, 31.135184538550806, 31.218822559840596, 31.302460581130383, 31.386098602420176, 31.469736623709963, 31.553374644999753, 31.637012666289543, 31.72065068757933, 31.80428870886912, 31.88792673015891, 31.9715647514487, 32.05520277273849, 32.138840794028276, 32.22247881531806, 32.306116836607856, 32.38975485789764, 32.473392879187436, 32.55703090047722, 32.64066892176701, 32.7243069430568, 32.80794496434659, 32.891582985636376 ], [ 29.20490422409066, 29.28854224538045, 29.37218026667024, 29.45581828796003, 29.53945630924982, 29.623094330539608, 29.706732351829398, 29.79037037311919, 29.874008394408975, 29.957646415698765, 30.041284436988555, 30.124922458278345, 30.208560479568135, 30.29219850085792, 30.37583652214771, 30.4594745434375, 30.543112564727288, 30.626750586017078, 30.710388607306868, 30.794026628596658, 30.877664649886448, 30.961302671176234, 31.044940692466025, 31.128578713755815, 31.2122167350456, 31.29585475633539, 31.37949277762518, 31.463130798914968, 31.546768820204758, 31.630406841494548, 31.714044862784334, 31.797682884074128, 31.881320905363914, 31.964958926653704, 32.048596947943494, 32.13223496923328, 32.215872990523074, 32.29951101181286, 32.38314903310265, 32.46678705439244, 32.55042507568223, 32.634063096972014, 32.71770111826181, 32.801339139551594, 32.88497716084139, 32.968615182131174, 33.05225320342096, 33.135891224710754, 33.21952924600054, 33.303167267290334 ], [ 29.616488505744613, 29.700126527034403, 29.783764548324193, 29.867402569613983, 29.951040590903773, 30.03467861219356, 30.11831663348335, 30.20195465477314, 30.285592676062926, 30.369230697352716, 30.452868718642506, 30.536506739932296, 30.620144761222086, 30.703782782511873, 30.787420803801663, 30.871058825091453, 30.95469684638124, 31.03833486767103, 31.12197288896082, 31.20561091025061, 31.2892489315404, 31.372886952830186, 31.456524974119976, 31.540162995409766, 31.623801016699552, 31.707439037989342, 31.791077059279132, 31.87471508056892, 31.95835310185871, 32.0419911231485, 32.125629144438285, 32.20926716572808, 32.292905187017865, 32.37654320830766, 32.460181229597445, 32.54381925088723, 32.627457272177026, 32.71109529346681, 32.7947333147566, 32.87837133604639, 32.96200935733618, 33.045647378625965, 33.12928539991576, 33.212923421205545, 33.29656144249534, 33.380199463785125, 33.46383748507491, 33.547475506364705, 33.63111352765449, 33.71475154894428 ], [ 30.028072787398557, 30.111710808688347, 30.195348829978137, 30.278986851267927, 30.362624872557717, 30.446262893847504, 30.529900915137294, 30.613538936427084, 30.69717695771687, 30.78081497900666, 30.86445300029645, 30.94809102158624, 31.03172904287603, 31.115367064165817, 31.199005085455607, 31.282643106745397, 31.366281128035183, 31.449919149324973, 31.533557170614763, 31.617195191904553, 31.700833213194343, 31.78447123448413, 31.86810925577392, 31.95174727706371, 32.035385298353496, 32.11902331964329, 32.202661340933076, 32.28629936222286, 32.36993738351266, 32.45357540480244, 32.53721342609223, 32.62085144738202, 32.70448946867181, 32.7881274899616, 32.87176551125139, 32.955403532541176, 33.03904155383097, 33.122679575120756, 33.20631759641054, 33.289955617700336, 33.37359363899012, 33.45723166027991, 33.5408696815697, 33.62450770285949, 33.70814572414928, 33.79178374543907, 33.875421766728856, 33.95905978801865, 34.042697809308436, 34.12633583059822 ], [ 30.439657069052508, 30.523295090342298, 30.606933111632088, 30.690571132921878, 30.77420915421167, 30.857847175501455, 30.941485196791245, 31.025123218081035, 31.10876123937082, 31.19239926066061, 31.2760372819504, 31.35967530324019, 31.44331332452998, 31.526951345819768, 31.610589367109558, 31.694227388399348, 31.777865409689134, 31.861503430978924, 31.945141452268714, 32.0287794735585, 32.112417494848295, 32.19605551613808, 32.279693537427875, 32.36333155871766, 32.44696958000745, 32.530607601297234, 32.61424562258703, 32.697883643876814, 32.78152166516661, 32.865159686456394, 32.94879770774618, 33.032435729035974, 33.11607375032576, 33.199711771615554, 33.28334979290534, 33.36698781419513, 33.45062583548492, 33.53426385677471, 33.617901878064494, 33.70153989935429, 33.785177920644074, 33.86881594193386, 33.952453963223654, 34.03609198451344, 34.119730005803234, 34.20336802709302, 34.28700604838281, 34.3706440696726, 34.45428209096239, 34.53792011225218 ], [ 30.85124135070646, 30.93487937199625, 31.01851739328604, 31.10215541457583, 31.18579343586562, 31.269431457155406, 31.353069478445196, 31.436707499734986, 31.520345521024772, 31.603983542314563, 31.687621563604353, 31.771259584894143, 31.854897606183933, 31.93853562747372, 32.022173648763506, 32.1058116700533, 32.189449691343086, 32.27308771263287, 32.356725733922666, 32.44036375521245, 32.524001776502246, 32.60763979779203, 32.69127781908182, 32.77491584037161, 32.8585538616614, 32.94219188295119, 33.02582990424098, 33.109467925530765, 33.19310594682056, 33.276743968110345, 33.36038198940013, 33.444020010689925, 33.52765803197971, 33.611296053269506, 33.69493407455929, 33.77857209584908, 33.86221011713887, 33.94584813842866, 34.029486159718445, 34.11312418100824, 34.196762202298025, 34.28040022358781, 34.364038244877605, 34.44767626616739, 34.531314287457185, 34.61495230874697, 34.69859033003676, 34.78222835132655, 34.86586637261634, 34.949504393906125 ], [ 31.26282563236041, 31.3464636536502, 31.43010167493999, 31.51373969622978, 31.59737771751957, 31.681015738809357, 31.764653760099147, 31.848291781388937, 31.931929802678724, 32.01556782396852, 32.099205845258304, 32.18284386654809, 32.266481887837884, 32.35011990912767, 32.43375793041746, 32.51739595170725, 32.60103397299704, 32.68467199428683, 32.76831001557662, 32.8519480368664, 32.9355860581562, 33.01922407944598, 33.10286210073578, 33.18650012202556, 33.27013814331535, 33.35377616460514, 33.43741418589493, 33.52105220718472, 33.60469022847451, 33.6883282497643, 33.77196627105408, 33.85560429234388, 33.93924231363366, 34.02288033492346, 34.10651835621324, 34.19015637750303, 34.27379439879282, 34.35743242008261, 34.441070441372396, 34.52470846266219, 34.608346483951976, 34.69198450524176, 34.775622526531556, 34.85926054782134, 34.94289856911114, 35.02653659040092, 35.11017461169071, 35.1938126329805, 35.27745065427029, 35.36108867556008 ], [ 31.674409914014362, 31.758047935304152, 31.841685956593942, 31.925323977883732, 32.00896199917352, 32.09260002046331, 32.176238041753095, 32.25987606304289, 32.343514084332675, 32.42715210562247, 32.510790126912255, 32.59442814820204, 32.678066169491835, 32.76170419078162, 32.84534221207141, 32.9289802333612, 33.01261825465099, 33.096256275940775, 33.17989429723057, 33.263532318520355, 33.34717033981015, 33.430808361099935, 33.51444638238972, 33.598084403679515, 33.6817224249693, 33.765360446259095, 33.84899846754888, 33.93263648883867, 34.01627451012846, 34.09991253141825, 34.183550552708034, 34.26718857399783, 34.350826595287614, 34.43446461657741, 34.518102637867194, 34.60174065915698, 34.685378680446775, 34.76901670173656, 34.85265472302635, 34.93629274431614, 35.01993076560593, 35.103568786895714, 35.18720680818551, 35.270844829475294, 35.35448285076509, 35.438120872054874, 35.52175889334466, 35.605396914634454, 35.68903493592424, 35.77267295721403 ], [ 32.08599419566831, 32.16963221695811, 32.25327023824789, 32.33690825953768, 32.42054628082747, 32.50418430211726, 32.587822323407046, 32.67146034469684, 32.755098365986626, 32.83873638727642, 32.922374408566206, 33.00601242985599, 33.089650451145786, 33.17328847243557, 33.25692649372536, 33.34056451501515, 33.42420253630494, 33.50784055759473, 33.59147857888452, 33.675116600174306, 33.7587546214641, 33.842392642753886, 33.92603066404368, 34.009668685333466, 34.09330670662325, 34.17694472791304, 34.26058274920283, 34.34422077049262, 34.42785879178241, 34.5114968130722, 34.595134834361986, 34.67877285565178, 34.762410876941566, 34.84604889823136, 34.929686919521146, 35.01332494081093, 35.096962962100726, 35.18060098339051, 35.2642390046803, 35.34787702597009, 35.43151504725988, 35.515153068549665, 35.59879108983946, 35.682429111129245, 35.76606713241904, 35.849705153708825, 35.93334317499861, 36.016981196288405, 36.10061921757819, 36.184257238867986 ], [ 32.497578477322264, 32.58121649861206, 32.664854519901844, 32.74849254119163, 32.832130562481424, 32.91576858377121, 32.999406605061, 33.08304462635079, 33.16668264764058, 33.25032066893037, 33.33395869022016, 33.417596711509944, 33.50123473279974, 33.584872754089524, 33.66851077537931, 33.752148796669104, 33.83578681795889, 33.91942483924868, 34.00306286053847, 34.08670088182826, 34.17033890311805, 34.25397692440784, 34.337614945697624, 34.42125296698742, 34.504890988277204, 34.588529009567, 34.672167030856784, 34.75580505214657, 34.839443073436364, 34.92308109472615, 35.00671911601594, 35.09035713730573, 35.17399515859552, 35.25763317988531, 35.3412712011751, 35.42490922246488, 35.50854724375468, 35.59218526504446, 35.67582328633425, 35.75946130762404, 35.84309932891383, 35.92673735020362, 36.01037537149341, 36.0940133927832, 36.17765141407299, 36.26128943536278, 36.34492745665256, 36.42856547794236, 36.51220349923214, 36.59584152052193 ], [ 32.909162758976215, 32.99280078026601, 33.076438801555796, 33.16007682284558, 33.243714844135376, 33.32735286542516, 33.41099088671495, 33.49462890800474, 33.57826692929453, 33.66190495058432, 33.74554297187411, 33.829180993163895, 33.91281901445369, 33.996457035743475, 34.08009505703326, 34.163733078323055, 34.24737109961284, 34.331009120902635, 34.41464714219242, 34.49828516348221, 34.581923184772, 34.66556120606179, 34.74919922735158, 34.83283724864137, 34.916475269931155, 35.00011329122094, 35.083751312510735, 35.16738933380052, 35.251027355090315, 35.3346653763801, 35.41830339766989, 35.50194141895968, 35.58557944024947, 35.66921746153926, 35.75285548282905, 35.836493504118835, 35.92013152540863, 36.003769546698415, 36.0874075679882, 36.171045589277995, 36.25468361056778, 36.33832163185757, 36.42195965314736, 36.50559767443715, 36.58923569572694, 36.67287371701673, 36.756511738306514, 36.84014975959631, 36.923787780886094, 37.00742580217589 ], [ 33.32074704063017, 33.40438506191996, 33.48802308320975, 33.57166110449953, 33.65529912578933, 33.73893714707911, 33.8225751683689, 33.90621318965869, 33.98985121094848, 34.07348923223827, 34.15712725352806, 34.240765274817846, 34.32440329610764, 34.408041317397426, 34.49167933868721, 34.57531735997701, 34.65895538126679, 34.74259340255658, 34.82623142384637, 34.90986944513616, 34.99350746642595, 35.07714548771574, 35.160783509005526, 35.24442153029532, 35.328059551585106, 35.4116975728749, 35.495335594164686, 35.57897361545447, 35.662611636744266, 35.74624965803405, 35.82988767932384, 35.91352570061363, 35.99716372190342, 36.08080174319321, 36.164439764483, 36.248077785772786, 36.33171580706258, 36.415353828352366, 36.49899184964215, 36.582629870931946, 36.66626789222173, 36.74990591351152, 36.83354393480131, 36.9171819560911, 37.00081997738089, 37.08445799867068, 37.168096019960466, 37.25173404125026, 37.335372062540046, 37.41901008382983 ], [ 33.73233132228412, 33.815969343573904, 33.8996073648637, 33.983245386153484, 34.06688340744327, 34.15052142873306, 34.23415945002285, 34.31779747131264, 34.40143549260243, 34.48507351389222, 34.568711535182004, 34.6523495564718, 34.735987577761584, 34.81962559905138, 34.903263620341164, 34.98690164163095, 35.070539662920744, 35.15417768421053, 35.23781570550032, 35.32145372679011, 35.4050917480799, 35.48872976936969, 35.57236779065948, 35.656005811949264, 35.73964383323906, 35.823281854528844, 35.90691987581863, 35.990557897108424, 36.07419591839821, 36.157833939688004, 36.24147196097779, 36.32510998226758, 36.40874800355737, 36.49238602484716, 36.57602404613694, 36.65966206742674, 36.74330008871652, 36.82693811000631, 36.910576131296104, 36.99421415258589, 37.077852173875684, 37.16149019516547, 37.24512821645526, 37.32876623774505, 37.41240425903484, 37.49604228032463, 37.57968030161442, 37.6633183229042, 37.74695634419399, 37.83059436548378 ], [ 34.14391560393807, 34.22755362522786, 34.31119164651765, 34.394829667807436, 34.47846768909723, 34.562105710387016, 34.6457437316768, 34.729381752966596, 34.81301977425638, 34.896657795546176, 34.98029581683596, 35.06393383812575, 35.14757185941554, 35.23120988070533, 35.314847901995115, 35.39848592328491, 35.482123944574695, 35.56576196586448, 35.649399987154275, 35.73303800844406, 35.816676029733856, 35.90031405102364, 35.98395207231343, 36.06759009360322, 36.15122811489301, 36.2348661361828, 36.31850415747259, 36.402142178762375, 36.48578020005217, 36.569418221341955, 36.65305624263174, 36.736694263921535, 36.82033228521132, 36.903970306501115, 36.9876083277909, 37.07124634908069, 37.15488437037048, 37.23852239166027, 37.322160412950055, 37.40579843423985, 37.489436455529635, 37.57307447681942, 37.656712498109215, 37.740350519399, 37.823988540688795, 37.90762656197858, 37.99126458326837, 38.07490260455816, 38.15854062584795, 38.242178647137735 ], [ 34.55549988559202, 34.63913790688181, 34.7227759281716, 34.80641394946139, 34.89005197075117, 34.97368999204096, 35.05732801333075, 35.14096603462054, 35.22460405591033, 35.30824207720012, 35.39188009848991, 35.4755181197797, 35.55915614106949, 35.64279416235928, 35.72643218364907, 35.81007020493885, 35.89370822622865, 35.97734624751843, 36.06098426880822, 36.14462229009801, 36.2282603113878, 36.31189833267759, 36.39553635396738, 36.479174375257166, 36.56281239654696, 36.646450417836746, 36.73008843912653, 36.813726460416326, 36.89736448170611, 36.981002502995906, 37.06464052428569, 37.14827854557548, 37.23191656686527, 37.31555458815506, 37.399192609444846, 37.48283063073464, 37.566468652024426, 37.65010667331421, 37.733744694604006, 37.81738271589379, 37.901020737183586, 37.98465875847337, 38.06829677976316, 38.15193480105295, 38.23557282234274, 38.31921084363253, 38.40284886492232, 38.486486886212106, 38.57012490750189, 38.653762928791686 ], [ 34.96708416724597, 35.05072218853576, 35.134360209825545, 35.21799823111534, 35.301636252405125, 35.38527427369492, 35.468912294984705, 35.55255031627449, 35.636188337564285, 35.71982635885407, 35.803464380143865, 35.88710240143365, 35.97074042272344, 36.05437844401323, 36.13801646530302, 36.221654486592804, 36.3052925078826, 36.388930529172384, 36.47256855046217, 36.556206571751964, 36.63984459304175, 36.723482614331544, 36.80712063562133, 36.89075865691112, 36.97439667820091, 37.0580346994907, 37.141672720780484, 37.22531074207028, 37.308948763360064, 37.39258678464985, 37.476224805939644, 37.55986282722943, 37.643500848519224, 37.72713886980901, 37.8107768910988, 37.89441491238859, 37.97805293367838, 38.06169095496817, 38.14532897625796, 38.228966997547744, 38.31260501883754, 38.396243040127324, 38.47988106141711, 38.563519082706904, 38.64715710399669, 38.73079512528648, 38.81443314657627, 38.89807116786606, 38.98170918915585, 39.06534721044564 ], [ 35.37866844889992, 35.46230647018971, 35.5459444914795, 35.62958251276929, 35.713220534059076, 35.79685855534886, 35.880496576638656, 35.96413459792844, 36.047772619218236, 36.13141064050802, 36.21504866179781, 36.2986866830876, 36.38232470437739, 36.46596272566718, 36.54960074695697, 36.633238768246756, 36.71687678953655, 36.800514810826336, 36.88415283211612, 36.967790853405916, 37.0514288746957, 37.135066895985496, 37.21870491727528, 37.30234293856507, 37.38598095985486, 37.46961898114465, 37.553257002434435, 37.63689502372423, 37.720533045014015, 37.80417106630381, 37.887809087593595, 37.97144710888338, 38.055085130173175, 38.13872315146296, 38.22236117275275, 38.30599919404254, 38.38963721533233, 38.473275236622115, 38.55691325791191, 38.640551279201695, 38.72418930049149, 38.807827321781275, 38.89146534307106, 38.975103364360855, 39.05874138565064, 39.142379406940435, 39.22601742823022, 39.30965544952001, 39.393293470809795, 39.47693149209959 ], [ 35.790252730553874, 35.87389075184366, 35.95752877313345, 36.04116679442324, 36.12480481571303, 36.20844283700282, 36.29208085829261, 36.375718879582394, 36.45935690087219, 36.542994922161974, 36.62663294345177, 36.710270964741554, 36.79390898603134, 36.877547007321134, 36.96118502861092, 37.04482304990071, 37.1284610711905, 37.21209909248029, 37.29573711377007, 37.37937513505987, 37.46301315634965, 37.54665117763945, 37.63028919892923, 37.71392722021902, 37.79756524150881, 37.8812032627986, 37.964841284088386, 38.04847930537818, 38.13211732666797, 38.21575534795775, 38.29939336924755, 38.38303139053733, 38.46666941182713, 38.55030743311691, 38.6339454544067, 38.71758347569649, 38.80122149698628, 38.88485951827607, 38.96849753956586, 39.052135560855646, 39.13577358214544, 39.219411603435226, 39.30304962472501, 39.386687646014806, 39.47032566730459, 39.55396368859438, 39.63760170988417, 39.72123973117396, 39.80487775246375, 39.88851577375354 ], [ 36.20183701220782, 36.28547503349761, 36.3691130547874, 36.452751076077185, 36.53638909736698, 36.620027118656765, 36.70366513994655, 36.787303161236345, 36.87094118252613, 36.954579203815925, 37.03821722510571, 37.1218552463955, 37.20549326768529, 37.28913128897508, 37.372769310264864, 37.45640733155466, 37.540045352844444, 37.62368337413423, 37.707321395424025, 37.79095941671381, 37.874597438003605, 37.95823545929339, 38.04187348058318, 38.12551150187297, 38.20914952316276, 38.29278754445255, 38.37642556574234, 38.460063587032124, 38.54370160832192, 38.627339629611704, 38.71097765090149, 38.794615672191284, 38.87825369348107, 38.961891714770864, 39.04552973606065, 39.12916775735044, 39.21280577864023, 39.29644379993002, 39.380081821219804, 39.4637198425096, 39.547357863799384, 39.63099588508917, 39.714633906378964, 39.79827192766875, 39.881909948958544, 39.96554797024833, 40.04918599153812, 40.13282401282791, 40.2164620341177, 40.30010005540748 ], [ 36.61342129386177, 36.69705931515156, 36.78069733644135, 36.864335357731136, 36.94797337902093, 37.031611400310716, 37.1152494216005, 37.198887442890296, 37.28252546418008, 37.366163485469876, 37.44980150675966, 37.53343952804945, 37.61707754933924, 37.70071557062903, 37.784353591918816, 37.86799161320861, 37.951629634498396, 38.03526765578819, 38.118905677077976, 38.20254369836776, 38.286181719657556, 38.36981974094734, 38.453457762237136, 38.53709578352692, 38.62073380481671, 38.704371826106495, 38.78800984739629, 38.871647868686075, 38.95528588997587, 39.038923911265655, 39.12256193255544, 39.206199953845235, 39.28983797513502, 39.373475996424816, 39.4571140177146, 39.54075203900439, 39.62439006029418, 39.70802808158397, 39.791666102873755, 39.87530412416355, 39.958942145453335, 40.04258016674312, 40.126218188032915, 40.2098562093227, 40.293494230612495, 40.37713225190228, 40.46077027319207, 40.54440829448186, 40.62804631577165, 40.71168433706144 ], [ 37.02500557551572, 37.108643596805514, 37.1922816180953, 37.27591963938509, 37.35955766067488, 37.44319568196467, 37.526833703254454, 37.61047172454425, 37.694109745834034, 37.77774776712383, 37.861385788413614, 37.9450238097034, 38.028661830993194, 38.11229985228298, 38.19593787357277, 38.27957589486256, 38.36321391615235, 38.44685193744213, 38.53048995873193, 38.61412798002171, 38.69776600131151, 38.78140402260129, 38.86504204389108, 38.948680065180874, 39.03231808647066, 39.115956107760454, 39.19959412905024, 39.28323215034003, 39.36687017162982, 39.45050819291961, 39.53414621420939, 39.61778423549919, 39.70142225678897, 39.78506027807877, 39.86869829936855, 39.95233632065834, 40.03597434194813, 40.11961236323792, 40.203250384527706, 40.2868884058175, 40.370526427107286, 40.45416444839707, 40.537802469686866, 40.62144049097665, 40.70507851226645, 40.78871653355623, 40.87235455484602, 40.95599257613581, 41.0396305974256, 41.123268618715386 ], [ 37.43658985716967, 37.520227878459465, 37.60386589974925, 37.68750392103904, 37.77114194232883, 37.85477996361862, 37.938417984908405, 38.0220560061982, 38.105694027487985, 38.18933204877778, 38.272970070067565, 38.35660809135735, 38.440246112647145, 38.52388413393693, 38.60752215522672, 38.69116017651651, 38.7747981978063, 38.85843621909609, 38.94207424038588, 39.025712261675665, 39.10935028296546, 39.192988304255245, 39.27662632554504, 39.360264346834825, 39.44390236812461, 39.5275403894144, 39.61117841070419, 39.69481643199398, 39.77845445328377, 39.86209247457356, 39.945730495863344, 40.02936851715314, 40.113006538442924, 40.19664455973272, 40.280282581022504, 40.36392060231229, 40.447558623602085, 40.53119664489187, 40.61483466618166, 40.69847268747145, 40.78211070876124, 40.865748730051024, 40.94938675134082, 41.033024772630604, 41.1166627939204, 41.200300815210184, 41.28393883649997, 41.367576857789764, 41.45121487907955, 41.534852900369344 ], [ 37.84817413882362, 37.93181216011342, 38.0154501814032, 38.09908820269299, 38.18272622398278, 38.26636424527257, 38.350002266562356, 38.43364028785215, 38.517278309141936, 38.60091633043173, 38.684554351721516, 38.7681923730113, 38.851830394301096, 38.93546841559088, 39.01910643688067, 39.10274445817046, 39.18638247946025, 39.270020500750036, 39.35365852203983, 39.437296543329616, 39.52093456461941, 39.604572585909196, 39.68821060719898, 39.771848628488776, 39.85548664977856, 39.939124671068356, 40.02276269235814, 40.10640071364793, 40.19003873493772, 40.27367675622751, 40.357314777517296, 40.44095279880709, 40.524590820096876, 40.60822884138667, 40.691866862676456, 40.77550488396624, 40.859142905256036, 40.94278092654582, 41.02641894783561, 41.1100569691254, 41.19369499041519, 41.277333011704975, 41.36097103299477, 41.444609054284555, 41.52824707557435, 41.611885096864135, 41.69552311815392, 41.779161139443715, 41.8627991607335, 41.94643718202329 ], [ 38.259758420477574, 38.34339644176737, 38.427034463057154, 38.51067248434694, 38.594310505636734, 38.67794852692652, 38.76158654821631, 38.8452245695061, 38.92886259079589, 39.01250061208568, 39.09613863337547, 39.179776654665254, 39.26341467595505, 39.347052697244834, 39.43069071853462, 39.514328739824414, 39.5979667611142, 39.681604782403994, 39.76524280369378, 39.84888082498357, 39.93251884627336, 40.01615686756315, 40.09979488885294, 40.18343291014273, 40.267070931432514, 40.3507089527223, 40.434346974012094, 40.51798499530188, 40.601623016591674, 40.68526103788146, 40.76889905917125, 40.85253708046104, 40.93617510175083, 41.01981312304062, 41.10345114433041, 41.18708916562019, 41.27072718690999, 41.35436520819977, 41.43800322948956, 41.52164125077935, 41.60527927206914, 41.68891729335893, 41.77255531464872, 41.85619333593851, 41.9398313572283, 42.02346937851809, 42.10710739980787, 42.19074542109767, 42.27438344238745, 42.35802146367725 ], [ 38.671342702131525, 38.75498072342132, 38.838618744711106, 38.92225676600089, 39.005894787290686, 39.08953280858047, 39.17317082987026, 39.25680885116005, 39.34044687244984, 39.42408489373963, 39.50772291502942, 39.591360936319205, 39.674998957609, 39.758636978898785, 39.84227500018857, 39.925913021478365, 40.00955104276815, 40.09318906405794, 40.17682708534773, 40.26046510663752, 40.34410312792731, 40.4277411492171, 40.511379170506885, 40.59501719179668, 40.678655213086465, 40.76229323437626, 40.845931255666045, 40.92956927695583, 41.013207298245625, 41.09684531953541, 41.1804833408252, 41.26412136211499, 41.34775938340478, 41.43139740469457, 41.51503542598436, 41.598673447274145, 41.68231146856394, 41.765949489853725, 41.84958751114351, 41.933225532433305, 42.01686355372309, 42.10050157501288, 42.18413959630267, 42.26777761759246, 42.35141563888225, 42.43505366017204, 42.518691681461824, 42.60232970275162, 42.685967724041404, 42.76960574533119 ], [ 39.08292698378548, 39.16656500507527, 39.25020302636506, 39.33384104765484, 39.41747906894464, 39.50111709023442, 39.58475511152421, 39.668393132814, 39.75203115410379, 39.83566917539358, 39.91930719668337, 40.002945217973156, 40.08658323926295, 40.17022126055274, 40.25385928184252, 40.33749730313232, 40.4211353244221, 40.5047733457119, 40.58841136700168, 40.67204938829147, 40.75568740958126, 40.83932543087105, 40.92296345216084, 41.00660147345063, 41.090239494740416, 41.1738775160302, 41.257515537319996, 41.34115355860978, 41.424791579899576, 41.50842960118936, 41.59206762247915, 41.67570564376894, 41.75934366505873, 41.84298168634852, 41.92661970763831, 42.010257728928096, 42.09389575021789, 42.177533771507676, 42.26117179279746, 42.344809814087256, 42.42844783537704, 42.51208585666683, 42.59572387795662, 42.67936189924641, 42.7629999205362, 42.84663794182599, 42.930275963115776, 43.01391398440557, 43.097552005695356, 43.18119002698515 ], [ 39.49451126543943, 39.57814928672922, 39.66178730801901, 39.745425329308794, 39.82906335059859, 39.912701371888375, 39.99633939317816, 40.079977414467955, 40.16361543575774, 40.247253457047535, 40.33089147833732, 40.41452949962711, 40.4981675209169, 40.58180554220669, 40.665443563496474, 40.74908158478627, 40.832719606076054, 40.91635762736584, 40.999995648655634, 41.08363366994542, 41.167271691235214, 41.250909712525, 41.33454773381479, 41.41818575510458, 41.50182377639437, 41.58546179768416, 41.66909981897395, 41.752737840263734, 41.83637586155353, 41.920013882843314, 42.0036519041331, 42.087289925422894, 42.17092794671268, 42.254565968002474, 42.33820398929226, 42.42184201058205, 42.50548003187184, 42.58911805316163, 42.672756074451414, 42.75639409574121, 42.840032117030994, 42.92367013832078, 43.007308159610574, 43.09094618090036, 43.174584202190154, 43.25822222347994, 43.34186024476973, 43.42549826605952, 43.50913628734931, 43.59277430863909 ], [ 39.90609554709338, 39.98973356838317, 40.07337158967296, 40.157009610962746, 40.24064763225254, 40.324285653542326, 40.40792367483211, 40.491561696121906, 40.57519971741169, 40.658837738701486, 40.74247575999127, 40.82611378128106, 40.90975180257085, 40.99338982386064, 41.077027845150425, 41.16066586644022, 41.244303887730005, 41.3279419090198, 41.411579930309586, 41.49521795159937, 41.578855972889166, 41.66249399417895, 41.746132015468746, 41.82977003675853, 41.91340805804832, 41.997046079338105, 42.0806841006279, 42.164322121917685, 42.24796014320748, 42.331598164497265, 42.41523618578705, 42.498874207076845, 42.58251222836663, 42.666150249656425, 42.74978827094621, 42.833426292236, 42.91706431352579, 43.00070233481558, 43.084340356105365, 43.16797837739516, 43.251616398684945, 43.33525441997473, 43.418892441264525, 43.50253046255431, 43.586168483844105, 43.66980650513389, 43.75344452642368, 43.83708254771347, 43.92072056900326, 44.00435859029305 ], [ 40.31767982874732, 40.40131785003712, 40.4849558713269, 40.56859389261669, 40.65223191390648, 40.73586993519627, 40.819507956486056, 40.90314597777585, 40.986783999065636, 41.07042202035543, 41.15406004164522, 41.237698062935, 41.3213360842248, 41.40497410551458, 41.48861212680437, 41.57225014809416, 41.65588816938395, 41.73952619067374, 41.82316421196353, 41.906802233253316, 41.99044025454311, 42.074078275832896, 42.15771629712269, 42.241354318412476, 42.32499233970226, 42.40863036099205, 42.49226838228184, 42.57590640357163, 42.65954442486142, 42.74318244615121, 42.826820467440996, 42.91045848873079, 42.994096510020576, 43.07773453131037, 43.161372552600156, 43.24501057388994, 43.328648595179736, 43.41228661646952, 43.49592463775931, 43.5795626590491, 43.66320068033889, 43.746838701628675, 43.83047672291847, 43.914114744208256, 43.99775276549805, 44.081390786787836, 44.16502880807762, 44.248666829367416, 44.3323048506572, 44.415942871946996 ], [ 40.72926411040128, 40.812902131691075, 40.89654015298086, 40.98017817427065, 41.06381619556044, 41.14745421685023, 41.231092238140015, 41.31473025942981, 41.398368280719595, 41.48200630200939, 41.565644323299175, 41.64928234458896, 41.732920365878755, 41.81655838716854, 41.90019640845833, 41.98383442974812, 42.06747245103791, 42.1511104723277, 42.23474849361749, 42.318386514907274, 42.40202453619707, 42.485662557486854, 42.56930057877665, 42.652938600066435, 42.73657662135622, 42.82021464264601, 42.9038526639358, 42.98749068522559, 43.07112870651538, 43.15476672780517, 43.238404749094954, 43.32204277038475, 43.405680791674534, 43.48931881296433, 43.572956834254114, 43.6565948555439, 43.740232876833694, 43.82387089812348, 43.90750891941327, 43.99114694070306, 44.07478496199285, 44.158422983282634, 44.24206100457243, 44.325699025862214, 44.40933704715201, 44.492975068441794, 44.57661308973158, 44.660251111021374, 44.74388913231116, 44.827527153600954 ], [ 41.140848392055226, 41.22448641334502, 41.308124434634806, 41.39176245592459, 41.475400477214386, 41.55903849850417, 41.64267651979396, 41.72631454108375, 41.80995256237354, 41.89359058366333, 41.97722860495312, 42.060866626242905, 42.1445046475327, 42.228142668822485, 42.31178069011227, 42.395418711402066, 42.47905673269185, 42.562694753981646, 42.64633277527143, 42.72997079656122, 42.81360881785101, 42.8972468391408, 42.98088486043059, 43.06452288172038, 43.148160903010165, 43.23179892429995, 43.315436945589745, 43.39907496687953, 43.482712988169325, 43.56635100945911, 43.6499890307489, 43.73362705203869, 43.81726507332848, 43.90090309461827, 43.98454111590806, 44.068179137197845, 44.15181715848764, 44.235455179777425, 44.31909320106721, 44.402731222357005, 44.48636924364679, 44.57000726493658, 44.65364528622637, 44.73728330751616, 44.82092132880595, 44.90455935009574, 44.988197371385525, 45.07183539267532, 45.155473413965105, 45.2391114352549 ], [ 41.552432673709184, 41.63607069499898, 41.719708716288764, 41.80334673757855, 41.886984758868344, 41.97062278015813, 42.05426080144792, 42.13789882273771, 42.2215368440275, 42.30517486531729, 42.38881288660708, 42.472450907896864, 42.55608892918666, 42.639726950476444, 42.72336497176623, 42.807002993056024, 42.89064101434581, 42.974279035635604, 43.05791705692539, 43.14155507821518, 43.22519309950497, 43.30883112079476, 43.39246914208455, 43.47610716337434, 43.55974518466412, 43.64338320595391, 43.7270212272437, 43.81065924853349, 43.894297269823284, 43.97793529111307, 44.06157331240286, 44.14521133369265, 44.22884935498244, 44.31248737627223, 44.39612539756202, 44.4797634188518, 44.5634014401416, 44.64703946143138, 44.73067748272117, 44.81431550401096, 44.89795352530075, 44.981591546590536, 45.06522956788033, 45.148867589170116, 45.23250561045991, 45.316143631749696, 45.39978165303948, 45.48341967432928, 45.56705769561906, 45.65069571690886 ], [ 41.96401695536313, 42.04765497665292, 42.13129299794271, 42.214931019232495, 42.29856904052229, 42.382207061812075, 42.46584508310186, 42.549483104391655, 42.63312112568144, 42.716759146971235, 42.80039716826102, 42.88403518955081, 42.9676732108406, 43.05131123213039, 43.134949253420174, 43.21858727470997, 43.302225295999754, 43.38586331728955, 43.469501338579335, 43.55313935986912, 43.636777381158915, 43.7204154024487, 43.804053423738495, 43.88769144502828, 43.97132946631807, 44.054967487607854, 44.13860550889765, 44.222243530187434, 44.30588155147723, 44.389519572767014, 44.4731575940568, 44.556795615346594, 44.64043363663638, 44.724071657926174, 44.80770967921596, 44.89134770050575, 44.97498572179554, 45.05862374308533, 45.142261764375114, 45.22589978566491, 45.309537806954694, 45.39317582824448, 45.476813849534274, 45.56045187082406, 45.644089892113854, 45.72772791340364, 45.81136593469343, 45.89500395598322, 45.97864197727301, 46.0622799985628 ], [ 42.37560123701708, 42.45923925830687, 42.54287727959666, 42.626515300886446, 42.71015332217624, 42.793791343466026, 42.87742936475581, 42.961067386045606, 43.04470540733539, 43.128343428625186, 43.21198144991497, 43.29561947120476, 43.37925749249455, 43.46289551378434, 43.546533535074126, 43.63017155636392, 43.713809577653706, 43.79744759894349, 43.881085620233286, 43.96472364152307, 44.048361662812866, 44.13199968410265, 44.21563770539244, 44.29927572668223, 44.38291374797202, 44.46655176926181, 44.5501897905516, 44.633827811841385, 44.71746583313118, 44.801103854420965, 44.88474187571075, 44.968379897000545, 45.05201791829033, 45.135655939580126, 45.21929396086991, 45.3029319821597, 45.38657000344949, 45.47020802473928, 45.553846046029065, 45.63748406731886, 45.721122088608645, 45.80476010989843, 45.888398131188225, 45.97203615247801, 46.055674173767805, 46.13931219505759, 46.22295021634738, 46.30658823763717, 46.39022625892696, 46.473864280216745 ], [ 42.78718551867103, 42.870823539960824, 42.95446156125061, 43.0380995825404, 43.12173760383019, 43.20537562511998, 43.289013646409764, 43.37265166769956, 43.456289688989344, 43.53992771027914, 43.623565731568924, 43.70720375285871, 43.790841774148504, 43.87447979543829, 43.95811781672808, 44.04175583801787, 44.12539385930766, 44.20903188059745, 44.29266990188724, 44.37630792317702, 44.45994594446682, 44.5435839657566, 44.6272219870464, 44.710860008336184, 44.79449802962597, 44.87813605091576, 44.96177407220555, 45.04541209349534, 45.12905011478513, 45.21268813607492, 45.2963261573647, 45.3799641786545, 45.46360219994428, 45.54724022123408, 45.63087824252386, 45.71451626381365, 45.79815428510344, 45.88179230639323, 45.965430327683016, 46.04906834897281, 46.132706370262596, 46.21634439155238, 46.299982412842176, 46.38362043413196, 46.46725845542176, 46.55089647671154, 46.63453449800133, 46.71817251929112, 46.80181054058091, 46.8854485618707 ], [ 43.19876980032498, 43.282407821614775, 43.36604584290456, 43.44968386419435, 43.53332188548414, 43.61695990677393, 43.700597928063715, 43.78423594935351, 43.867873970643295, 43.95151199193309, 44.035150013222875, 44.11878803451266, 44.202426055802455, 44.28606407709224, 44.36970209838203, 44.45334011967182, 44.53697814096161, 44.620616162251395, 44.70425418354119, 44.787892204830975, 44.87153022612077, 44.955168247410555, 45.03880626870034, 45.122444289990135, 45.20608231127992, 45.289720332569715, 45.3733583538595, 45.45699637514929, 45.54063439643908, 45.62427241772887, 45.707910439018654, 45.79154846030845, 45.875186481598234, 45.95882450288803, 46.042462524177814, 46.1261005454676, 46.209738566757395, 46.29337658804718, 46.37701460933697, 46.46065263062676, 46.54429065191655, 46.627928673206334, 46.71156669449613, 46.795204715785914, 46.87884273707571, 46.962480758365494, 47.04611877965528, 47.129756800945074, 47.21339482223486, 47.29703284352465 ], [ 43.61035408197893, 43.69399210326873, 43.77763012455851, 43.8612681458483, 43.94490616713809, 44.02854418842788, 44.112182209717666, 44.19582023100746, 44.279458252297246, 44.36309627358704, 44.446734294876826, 44.53037231616661, 44.614010337456406, 44.69764835874619, 44.78128638003598, 44.86492440132577, 44.94856242261556, 45.03220044390535, 45.11583846519514, 45.199476486484926, 45.28311450777472, 45.366752529064506, 45.4503905503543, 45.534028571644086, 45.61766659293387, 45.70130461422366, 45.78494263551345, 45.86858065680324, 45.95221867809303, 46.03585669938282, 46.119494720672606, 46.2031327419624, 46.286770763252186, 46.37040878454198, 46.454046805831766, 46.53768482712155, 46.621322848411346, 46.70496086970113, 46.78859889099092, 46.87223691228071, 46.9558749335705, 47.039512954860285, 47.12315097615008, 47.206788997439865, 47.29042701872966, 47.374065040019445, 47.45770306130923, 47.541341082599025, 47.62497910388881, 47.708617125178606 ], [ 44.021938363632884, 44.10557638492268, 44.189214406212464, 44.27285242750225, 44.356490448792044, 44.44012847008183, 44.52376649137162, 44.60740451266141, 44.6910425339512, 44.77468055524099, 44.85831857653078, 44.941956597820564, 45.02559461911036, 45.109232640400144, 45.19287066168993, 45.276508682979724, 45.36014670426951, 45.4437847255593, 45.52742274684909, 45.61106076813888, 45.69469878942867, 45.77833681071846, 45.861974832008244, 45.94561285329804, 46.029250874587824, 46.11288889587762, 46.196526917167404, 46.28016493845719, 46.363802959746984, 46.44744098103677, 46.53107900232656, 46.61471702361635, 46.69835504490614, 46.78199306619593, 46.86563108748572, 46.9492691087755, 47.0329071300653, 47.11654515135508, 47.20018317264487, 47.28382119393466, 47.36745921522445, 47.45109723651424, 47.53473525780403, 47.61837327909382, 47.70201130038361, 47.7856493216734, 47.86928734296318, 47.95292536425298, 48.03656338554276, 48.12020140683255 ], [ 44.433522645286835, 44.51716066657663, 44.600798687866416, 44.6844367091562, 44.768074730445996, 44.85171275173578, 44.93535077302557, 45.01898879431536, 45.10262681560515, 45.18626483689494, 45.26990285818473, 45.353540879474515, 45.43717890076431, 45.520816922054095, 45.60445494334388, 45.688092964633675, 45.77173098592346, 45.855369007213255, 45.93900702850304, 46.02264504979283, 46.10628307108262, 46.18992109237241, 46.2735591136622, 46.35719713495199, 46.440835156241775, 46.52447317753156, 46.608111198821355, 46.69174922011114, 46.775387241400935, 46.85902526269072, 46.94266328398051, 47.0263013052703, 47.10993932656009, 47.19357734784988, 47.27721536913967, 47.360853390429455, 47.44449141171925, 47.528129433009035, 47.61176745429882, 47.695405475588615, 47.7790434968784, 47.86268151816819, 47.94631953945798, 48.02995756074777, 48.11359558203756, 48.19723360332735, 48.280871624617134, 48.36450964590693, 48.448147667196714, 48.53178568848651 ] ] } ], "layout": { "height": 400, "margin": { "b": 10, "l": 10, "pad": 10, "r": 10, "t": 10 }, "scene": { "camera": { "center": { "x": 0, "y": 0, "z": 0 }, "eye": { "x": 2, "y": -2, "z": 0.5 }, "up": { "x": 0, "y": 0, "z": 0 } }, "xaxis": { "title": { "text": "tamanho" } }, "yaxis": { "title": { "text": "quartos" } }, "zaxis": { "title": { "text": "preço" } } }, "width": 900 } }, "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "\n", "plot = go.Scatter3d(x=sizes, y=bedrooms, z=prices, mode='markers',\n", " marker=dict(size=12, line=dict(color='rgba(217, 217, 217, 0.14)', width=0.5),\n", " opacity=0.8))\n", "\n", "x = np.linspace(1, 2, 50)\n", "y = np.linspace(2, 4, 50)\n", "\n", "z = []\n", "for i in range(len(x)):\n", " z.append([])\n", " for j in range(len(y)):\n", " z[-1].append(f([x[i], y[j]], coefficients[-1]))\n", "\n", "plane = go.Surface(x=x, y=y, z=z, showscale=False)\n", "\n", "camera = dict(\n", " up=dict(x=0, y=0, z=0),\n", " center=dict(x=0, y=0, z=0),\n", " eye=dict(x=2, y=-2, z=0.5)\n", ")\n", "\n", "layout = go.Layout(width=900, height=400,\n", " margin=go.layout.Margin(l=10, r=10, b=10, t=10, pad=10),\n", " scene=dict(xaxis=dict(title=\"tamanho\"), yaxis=dict(title=\"quartos\"), zaxis=dict(title=\"preço\")))\n", "\n", "data = [plot, plane]\n", "\n", "fig = go.Figure(data=data, layout=layout)\n", "fig['layout'].update(scene=dict(camera=camera))\n", "\n", "plotly.offline.iplot(fig)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.2" } }, "nbformat": 4, "nbformat_minor": 2 }