Newer
Older
Danilo Ferreira de Lima
committed
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
" window.open(figure.canvas.toDataURL());\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element;\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error('Failed to find cell for figure', id, fig);\n",
" return;\n",
" }\n",
" fig.cell_info[0].output_area.element.on(\n",
" 'cleared',\n",
" { fig: fig },\n",
" fig._remove_fig_handler\n",
" );\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function (fig, msg) {\n",
" var width = fig.canvas.width / fig.ratio;\n",
" fig.cell_info[0].output_area.element.off(\n",
" 'cleared',\n",
" fig._remove_fig_handler\n",
" );\n",
" fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable();\n",
" fig.parent_element.innerHTML =\n",
" '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
" fig.close_ws(fig, msg);\n",
"};\n",
"\n",
"mpl.figure.prototype.close_ws = function (fig, msg) {\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"};\n",
"\n",
"mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width / this.ratio;\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] =\n",
" '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"};\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function () {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message('ack', {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () {\n",
" fig.push_to_output();\n",
" }, 1000);\n",
"};\n",
"\n",
"mpl.figure.prototype._init_toolbar = function () {\n",
" var fig = this;\n",
"\n",
" var toolbar = document.createElement('div');\n",
" toolbar.classList = 'btn-toolbar';\n",
" this.root.appendChild(toolbar);\n",
"\n",
" function on_click_closure(name) {\n",
" return function (_event) {\n",
" return fig.toolbar_button_onclick(name);\n",
" };\n",
" }\n",
"\n",
" function on_mouseover_closure(tooltip) {\n",
" return function (event) {\n",
" if (!event.currentTarget.disabled) {\n",
" return fig.toolbar_button_onmouseover(tooltip);\n",
" }\n",
" };\n",
" }\n",
"\n",
" fig.buttons = {};\n",
" var buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'btn-group';\n",
" var button;\n",
" for (var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" /* Instead of a spacer, we start a new button group. */\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
" buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'btn-group';\n",
" continue;\n",
" }\n",
"\n",
" button = fig.buttons[name] = document.createElement('button');\n",
" button.classList = 'btn btn-default';\n",
" button.href = '#';\n",
" button.title = name;\n",
" button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
" button.addEventListener('click', on_click_closure(method_name));\n",
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
" buttonGroup.appendChild(button);\n",
" }\n",
"\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = document.createElement('span');\n",
" status_bar.classList = 'mpl-message pull-right';\n",
" toolbar.appendChild(status_bar);\n",
" this.message = status_bar;\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = document.createElement('div');\n",
" buttongrp.classList = 'btn-group inline pull-right';\n",
" button = document.createElement('button');\n",
" button.classList = 'btn btn-mini btn-primary';\n",
" button.href = '#';\n",
" button.title = 'Stop Interaction';\n",
" button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
" button.addEventListener('click', function (_evt) {\n",
" fig.handle_close(fig, {});\n",
" });\n",
" button.addEventListener(\n",
" 'mouseover',\n",
" on_mouseover_closure('Stop Interaction')\n",
" );\n",
" buttongrp.appendChild(button);\n",
" var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
" titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
"};\n",
"\n",
"mpl.figure.prototype._remove_fig_handler = function (event) {\n",
" var fig = event.data.fig;\n",
" if (event.target !== this) {\n",
" // Ignore bubbled events from children.\n",
" return;\n",
" }\n",
" fig.close_ws(fig, {});\n",
"};\n",
"\n",
"mpl.figure.prototype._root_extra_style = function (el) {\n",
" el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
"};\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function (el) {\n",
" // this is important to make the div 'focusable\n",
" el.setAttribute('tabindex', 0);\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" } else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager) {\n",
" manager = IPython.keyboard_manager;\n",
" }\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which === 13) {\n",
" this.canvas_div.blur();\n",
" // select the cell after this one\n",
" var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
" IPython.notebook.select(index + 1);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
" fig.ondownload(fig, null);\n",
"};\n",
"\n",
"mpl.find_output_cell = function (html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i = 0; i < ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code') {\n",
" for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] === html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"};\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel !== null) {\n",
" IPython.notebook.kernel.comm_manager.register_target(\n",
" 'matplotlib',\n",
" mpl.mpl_figure_comm\n",
" );\n",
"}\n"
],
Danilo Ferreira de Lima
committed
"<IPython.core.display.Javascript object>"
Danilo Ferreira de Lima
committed
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAYAAADbcAZoAAAgAElEQVR4nOzdeVhU970/cPpLTNo+vfc+vX16s7VpZFE0i9mapNlskiYxjTY3sTFpWmOTpk1M0ixNm9qmrU2b2OSWQWcAEVAWEdxA3HBXQBFBZXFjU1kEGfZ9GWY43/fvD2BknDnDnHHmzAHer+f5PFY4M+fMDDWfN9/z/X79QEREREREpBI/X18AERERERFNHAwgRERERESkGgYQIiIiIiJSDQMIERERERGphgGEiIiIiIhUwwBCRERERESqYQAhIiIiIiLVMIAQEREREZFqGECIiIiIiEg1DCBERERERKQaBhAiIiIiIlINAwgREREREamGAYSIiIiIiFTDAEJERERERKphACEiIiIiItUwgBARERERkWoYQIiIiIiISDUMIEREREREpBoGECIiIiIiUg0DCBERERERqYYBhIiIiIiIVMMAQkREREREqmEAISIiIiIi1TCAEBERERGRahhAiIiIiIhINQwgRERERESkGgYQIiIiIiJSDQMIERERERGphgGEiIiIiIhUwwBCRERERESqYQAhIiIiIiLVMIAQEREREZFqGECIiIiIiEg1DCBERERERKQaBhAiIiIiIlINAwgREREREamGAYSIiIiIiFTDAEJERERERKphACEiIiIiItUwgBARERERkWoYQIiIiIiISDUMIEREREREpBoGECIiIiIiUg0DCBERERERqYYBhIiIiIiIVMMAQkREREREqmEAISIiIiIi1TCAEBERERGRahhAiIiIiIhINQwgRERERESkGgYQIiIiIiJSDQMIERERERGphgGEiIiIiIhUwwBCRERERESqYQAhIiIiIiLVMIAQEREREZFqGECIiIiIiEg1DCBERERERKQaBhAiIiIiIlINAwgREREREamGAYSIiIiIiFTDAEJERERERKphACEiIiIiItUwgBARERERkWoYQIiIiIiISDUMIEREREREpBoGECIiIiIiUg0DCBERERERqYYBhIiIiIiIVMMAQkREREREqmEAISIiIiIi1TCAEBERERGRahhAiIiIiIhINQwgRERERESkGgYQIiIiIiJSDQMIERERERGphgGEiIiIiIhUwwBCRERERESqYQAhIiIiIiLVMIAQEREREZFqGECIiIiIiEg1DCBERERERKQa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495XYWEhFi5cGPPahg0bYLPZYLfbAWgBZOXKlTHHPPvss+jSpUtbPlJqZwwgOaa+vmPPE+no9wd0/Hvk/eW+jn6PvL/clw/32NFwCBZFYwDJMR39P7od/f6Ajn+PvL/c19HvkfeX+/LhHjuisrIyzJgxI+a10tLShJPQS0tLY16bPn16q0no48ePjzmmvLyck9AtjgEkx3T0/+h29PsDOv498v5yX0e/R95f7suHe+yImpbhXbZsGXbs2IHZs2ejW7du+PHHHwEAc+fOxeTJkyPHNy3D+7vf/Q47duzAsmXLWi3Du3HjRnTq1AmLFi3Czp07sWjRIi7DmwMYQHKMz+fDvHnz4o6v7Ag6+v0BHf8eeX+5r6PfI+8v9+XDPXZUS5YsQc+ePdG5c2cMGDAA77//fuTPpkyZghEjRsQcv27dOpx44ono3LkzevXqFXcjwhdeeAHFxcUoKChASUkJ1qxZ0963QW3EAEJERERERFnDAEJERERERFnDAEJERERERFnDAEJERERERFnDAEJERERERFnDAJJD5s+fjyFDhuDAAw9E9+7d4x6za9cunHXWWTjooINw6KGH4oYbboDf789yTzPnq6++wjnnnINDDz0UBx98MIYOHYp3333X7G5l1KuvvoqysjJ07doVhx56KM477zyzu5RxPp8P/fr1g81mw9atW83uTsb88MMPuOqqq9CrVy907doVv/71r3HnnXfm9N+5JUuWoFevXujSpQsGDBiA9evXm92ljFm4cCEGDRqEn/3sZzj88MNx7rnn4ssvvzS7W+1m4cKFsNlsmDVrltldyZg9e/bg0ksvxSGHHIIDDzwQ/fr1wyeffGJ2t4jIIAaQHHLnnXdi8eLFuPHGG+MGkFAohL59+2LkyJH49NNP8fbbb+Ooo47C9ddfb0JvM+O4447DGWecgc8++wxff/01rr32Whx00EGw2+1mdy0jVq9ejV/84hf461//iq+++gpffvklXnjhBbO7lXEzZ87E+PHjO1wAeeONN3DFFVfgrbfewnfffYeXXnoJRxxxBObMmWN219LStEb/0qVLsWPHDsyaNQvdunXDrl27zO5aRowbNw7Lly/H559/jm3btuHMM89Ejx494Ha7ze5axm3evBm9evXCCSec0GECSE1NDXr27IkrrrgCH330EX744Qe88847+Pbbb83uGhEZxACSg5YvXx43gLz++uvYf//9sXfv3shrzz33HLp06ZKTmzVVVVXBZrPFfAPb0NAAm82Gd955x8SeZUYwGMTRRx+NJ5980uyutKvXX38dJSUl+OKLLzpcAInngQcewLHHHmt2N9JSVlaG6dOnx7xWUlKiu0txrqusrITNZovZh6AjcLlcKCwsxNtvv40RI0Z0mAByyy23YNiwYWZ3g4gygAEkB+kFkDvuuAMnnOWcnc4AAAeLSURBVHBCzGs1NTWw2Ww5OWxJRFBaWopp06bB7XYjGAziwQcfxP/8z/+gtrbW7O612UcffQSbzYannnoK/fv3x5FHHony8nJ8/vnnZnctYxwOB44++mh8/PHH+OGHH/IigNx+++0YOHCg2d0wzO/3o1OnTli7dm3M6zNnzsTw4cNN6lX7+uabb2Cz2bB9+3azu5JRl19+OWbPng0AHSqAlJaWYvbs2ZgwYQIOP/xw9O/fH3/729/M7hYRpYEBJAfpBZCrr74ap59+eqvXO3fujJUrV2ajaxm3Z88eDBw4EPvttx86deqEo446qsMUsM899xxsNht69OiB1atX45NPPsGkSZNw6KGHorq62uzutZmIoLy8HPfeey8A5EUA+fbbb/Hzn/8cS5cuNbsrhu3duxc2mw0bN26MeX3BggUoKioyqVftR0Rw9tlnd7hv1J977jn07dsXXq8XQMcKIF26dEGXLl1w66234tNPP8Xjjz+Orl274umnnza7a0RkEAOIyebNmwebzZawffzxxzHvSRRAxo4d2+r1goICPPfcc+12D0ales8ignPOOQfjx4/Hhg0bsGXLFsyYMQNHH3009u3bZ/Zt6Er1/lasWAGbzYYnnngi8l6fz4fDDjsMjz/+uIl3kFiq9/foo49i6NChCIVCAHIrgKTz93Lv3r047rjjMHXqVJN63TZNAWTTpk0xr8+fPx/FxcUm9ar9XHvttejZsyd2795tdlcy5qeffsIRRxyBbdu2RV7rSAGkoKAAQ4YMiXnthhtuwODBg03qERGliwHEZFVVVdi5c2fC1vRNVpNcH4KV6j2/88472H///VvNXznuuONw3333mdT75FK9v3fffRc2mw3//e9/Y95fVlaG2267zaTeJ5fq/Z177rnYf//90alTp0iz2Wzo1KkTLr/8crNvIyGjfy/37t2LoqIiTJ48GUopE3uevnwagnX99dfjV7/6Fb7//nuzu5JRL774YuTvWPTfuaYnyE1fBuSqHj16tAr4jz32GI466iiTekRE6WIAyUHJJqFHPx1YtWpVzk5Cf/nll7H//vvD5XLFvF5UVIQFCxaY1KvMqa+vR5cuXWImoQcCARxxxBExT0Vy1a5du7B9+/ZIe+utt2Cz2bB69eoO9a3znj17UFhYiIsvvjjnC7yysjLMmDEj5rXS0tIOMwldRHDdddfhqKOOwtdff212dzKuoaEh5u/c9u3bMWjQIFx22WUdYp7LpEmTWg2Zmz17dqunIkRkfQwgOWTXrl3YunUr7r77bvzsZz/D1q1bsXXr1kiB3rQM7+jRo/Hpp5/inXfewa9+9aucXYa3qqoKhx56KM4//3xs27YNX331FW666SYUFBTEDDHIZbNmzcLRRx+Nt956C19++SWmTp2KI444AjU1NWZ3LeNyaQhWqpqGXY0aNQp79uyB3W6PtFzUtAzvsmXLsGPHDsyePRvdunXDjz/+aHbXMmLGjBno3r071q1bF/OzamxsNLtr7aYjDcHavHkzDjjgACxYsADffPMNVqxYgYMOOgjPPvus2V0jov/fzt2rNBKGYRgudPwpghBQS0WCWAQEKysrsckhWKQXwUJPIXgE2uYcFAWrFDZCKsETSCd2IvgH8m4nW6zFsjvvR8J1lcMUD0wx3DDz/SUBMka63e4fv0UfDAbf94xGo+h0OjE/Px/NZjMODw/j/f293Oh/NBwOY29vL5rNZjQajdje3o7r6+vSs/6bz8/POD4+jqWlpWg0GrG7uztRp2D9bhIDpN/v//iPyLg6OzuLlZWVmJmZia2trYk6ovanZ9Xv90tPq80kBUhExOXlZbTb7ZidnY2NjQ2nYMGYGt+3JAAAMHYECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAhATZ6enmJ5eTl6vd73tbu7u6iqKm5ubgouA4ByBAhAja6urqKqqhgOh/Hy8hKtViuOjo5KzwKAYgQIQM0ODg5ifX099vf3o91ux9vbW+lJAFCMAAGo2evra6ytrUVVVXF/f196DgAUJUAAavbw8BBzc3MxNTUVFxcXpecAQFECBKBGHx8fsbm5Gd1uN05PT2NxcTEeHx9LzwKAYgQIQI1OTk5idXU1np+f4+vrK3Z2dqLT6ZSeBQDFCBCAmgwGg5ieno7b29vva6PRKBYWFuL8/LzgMgAoR4AAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQ5hf2kcnsV2wRoAAAAABJRU5ErkJggg==\" width=\"800\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
Danilo Ferreira de Lima
committed
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(8, 8))\n",
"data.plot.scatter(x=\"x\", y=\"y\", c=\"source\", colormap='viridis', ax=ax)\n",
"ax.set(xlabel=\"x\", ylabel=r\"y\", title=\"\")\n",
"plt.show()"
]
},
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
{
"cell_type": "markdown",
"id": "a376636d",
"metadata": {},
"source": [
"There are several ways of finding similarities in the data. The Gaussian Mixture Model assumes that the data has been produced exactly as in this example. For each sample, the procedure assumed to be used for the generation of each sample is the following:\n",
" * a random integer is chosen according to a discrete probability distribution, which identifies to which cluster the sample belongs to (this is the `source` variable in the generation procedure above);\n",
" * that random integer is assumed to be used to choose the mean and covariance matrix for a Gaussian random variable, which is then used to produce the observed sample.\n",
" \n",
"Out objective here is then to find out the probability of producing a sample for each cluster (the probabilities with which a sample belongs to one cluster instead of the others), the means and covariance matrices for the model. Using Bayes' theorem, one may write down the posterior probability for the true means, covariances and cluster probabilities ($\\theta$) given the data ($\\x$), but it is very hard to calculate the parameters from it. Let us call the cluster that a specific sample belongs to, $z$.\n",
"\n",
"The true posterior would look like this:\n",
"\n",
"$p(\\theta|x) = \\frac{p(x|\\theta) p(\\theta)}{p(x)}$\n",
"\n",
"We assume $p(\\theta)$ is constant for all $\\theta$ and we know $p(x)$ is independent of $\\theta$ (because it is just the probability we obtained the existing data). We also know that $p(x|\\theta) = \\sum_z p(x,z|\\theta)$, since summing over all $z$, we obtain a total probability 1 of getting any $z$.\n",
"\n",
"$p(\\theta|x) \\propto \\sum_z p(x,z|\\theta) = \\sum_z p(x|\\theta,z) p(z|\\theta)$\n",
"\n",
"Where we have expanded it on $z$ using $p(a,b) = p(a|b)p(b)$.\n",
"\n",
"Now if we want to find the most probable $\\theta$ from this posterior (the \"maximum a posteriori\", or \"MAP\"), we just need to maximize the right-hand side of the last equation. This is very hard to do, but we can use the Expectation-Maximization (EM) algorithm, on which we iteratively improve our probability estimates. This method works as follows.\n",
"\n",
"First we define the log-likelihood $LL(\\theta|z) = \\log L(\\theta|z) = \\log p(x|\\theta,z) = \\sum_{k=\\text{sample}} \\log p(x_k|\\theta,z_k)$. Since we are assuming that the probability for each data sample $x_k$ is a Gaussian distribution, each of the terms in the sum is a Gaussian probability, so if we know $\\theta$ and $z_k$, this full sum can be calculated. The issue is that we do not know $z_k$ (that is the whole point!).\n",
"\n",
"We start by assuming $\\theta=\\theta_0$ for some random initial value of the parameters. The EM method iterates on two steps:\n",
"\n",
" 1. Calculate the *average* value of $LL(\\theta|z)$ over $z$ assuming the current $\\theta_i$ to calculate $p(z|\\theta)$, that is: $Q(\\theta) = \\sum_z LL(\\theta|z) p(z|\\theta_i)$. This means we calculate the weighted sum of the log-likelihood a point belongs to each Gaussian, weighted by the probability that that Gaussian was the reason that sample was generated. This avoids needing to know the correct $z_k$, since we just sum over all possibilities. The weights of this weighted sum are simply one of the parameters $\\theta$, namely, the cluster probabilities.\n",
" \n",
" 2. Find the $\\theta$ which maximizes $Q(\\theta)$ and use this as the next $\\theta_{i+1}$.\n",
"\n",
"These two steps are iterated to improve the $\\theta$ for several iterations. It can be shown that an improvement on $Q$ following this procedure leads to a new $\\theta$ that improves the posterior probability $p(\\theta|x)$ above (see https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm#Proof_of_correctness ).\n",
"\n",
"We will not write all of this from scratch. Instead, we use the `GaussianMixture` function in `scikit-learn`, which has this ready for us. It is nevertheless important to understand the assumptions made here: the underlying samples are assumed to come from a discrete combination of Gaussians. Other mixture models are possible using other underlying distributions, but note that this method will not work if the samples do not follow this generative pattern."
]
},
{
"cell_type": "code",
Danilo Ferreira de Lima
committed
"execution_count": 7,
"id": "0837b3ff",
"metadata": {},
"outputs": [],
"source": [
"gmm = GaussianMixture(n_components=3, covariance_type=\"full\", max_iter=20)"
]
},
{
"cell_type": "code",
Danilo Ferreira de Lima
committed
"execution_count": 8,
"id": "8798f857",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"GaussianMixture(max_iter=20, n_components=3)"
]
},
Danilo Ferreira de Lima
committed
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gmm.fit(data.loc[:, [\"x\", \"y\"]])"
]
},
{
"cell_type": "markdown",
"id": "e928f498",
"metadata": {},
"source": [
"Now that we have model fit, we can even check the fit parameters $\\theta$, which include the means, the covariance matrices and the probabilities given to each Gaussian in the mixture:"
]
},
{
"cell_type": "code",
Danilo Ferreira de Lima
committed
"execution_count": 9,
"id": "fb5796e5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
Danilo Ferreira de Lima
committed
"array([[-5.00533402, -1.00291721],\n",
" [ 4.98736078, -1.99324473],\n",
" [ 0.99263505, 4.95370197]])"
Danilo Ferreira de Lima
committed
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gmm.means_"
]
},
{
"cell_type": "code",
Danilo Ferreira de Lima
committed
"execution_count": 10,
"id": "182904d1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
Danilo Ferreira de Lima
committed
"array([[[ 1.97696177, -0.14298004],\n",
" [-0.14298004, 5.08432238]],\n",
Danilo Ferreira de Lima
committed
" [[ 0.19127883, 0.09340703],\n",
" [ 0.09340703, 0.18650429]],\n",
Danilo Ferreira de Lima
committed
" [[ 1.00348273, 0.47652348],\n",
" [ 0.47652348, 0.98154818]]])"
Danilo Ferreira de Lima
committed
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gmm.covariances_"
]
},
{
"cell_type": "code",
Danilo Ferreira de Lima
committed
"execution_count": 11,
"id": "2faa1f72",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
Danilo Ferreira de Lima
committed
"array([0.33306256, 0.33333333, 0.33360411])"
Danilo Ferreira de Lima
committed
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gmm.weights_"
]
},
{
"cell_type": "markdown",
"id": "b54001fc",
"metadata": {},
"source": [
"We can predict to which cluster each sample belongs now by selecting the cluster for each sample that maximizes the probability $p(z|\\theta,x)$, now that we know $\\theta$."
]
},
{
"cell_type": "code",
Danilo Ferreira de Lima
committed
"execution_count": 12,
"id": "cc8fc1f1",
"metadata": {},
"outputs": [],
"source": [
"guess = gmm.predict(data.loc[:, [\"x\", \"y\"]])"
]
},
{
"cell_type": "markdown",
"id": "68560fb4",
"metadata": {},
"source": [
"Let's plot it!"
]
},
{
"cell_type": "code",
Danilo Ferreira de Lima
committed
"execution_count": 13,
"id": "88982b21",
"metadata": {},
"outputs": [],
"source": [
"data.loc[:, \"guess\"] = guess"
]
},
{
"cell_type": "code",
Danilo Ferreira de Lima
committed
"execution_count": 14,
"id": "333581b5",
"metadata": {},
"outputs": [
{
"data": {
Danilo Ferreira de Lima
committed
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"/* global mpl */\n",
"window.mpl = {};\n",
"\n",
"mpl.get_websocket_type = function () {\n",
" if (typeof WebSocket !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof MozWebSocket !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert(\n",
" 'Your browser does not have WebSocket support. ' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.'\n",
" );\n",
" }\n",
"};\n",
"\n",
"mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = this.ws.binaryType !== undefined;\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById('mpl-warnings');\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent =\n",
" 'This browser does not support binary websocket messages. ' +\n",
" 'Performance may be slow.';\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = document.createElement('div');\n",
" this.root.setAttribute('style', 'display: inline-block');\n",
" this._root_extra_style(this.root);\n",
"\n",
" parent_element.appendChild(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message('supports_binary', { value: fig.supports_binary });\n",
" fig.send_message('send_image_mode', {});\n",
" if (fig.ratio !== 1) {\n",
" fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
" }\n",
" fig.send_message('refresh', {});\n",
" };\n",
"\n",
" this.imageObj.onload = function () {\n",
" if (fig.image_mode === 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function () {\n",
" fig.ws.close();\n",
" };\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"};\n",
"\n",
"mpl.figure.prototype._init_header = function () {\n",
" var titlebar = document.createElement('div');\n",
" titlebar.classList =\n",
" 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
" var titletext = document.createElement('div');\n",
" titletext.classList = 'ui-dialog-title';\n",
" titletext.setAttribute(\n",
" 'style',\n",
" 'width: 100%; text-align: center; padding: 3px;'\n",
" );\n",
" titlebar.appendChild(titletext);\n",
" this.root.appendChild(titlebar);\n",
" this.header = titletext;\n",
"};\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
"\n",
"mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
"\n",
"mpl.figure.prototype._init_canvas = function () {\n",
" var fig = this;\n",
"\n",
" var canvas_div = (this.canvas_div = document.createElement('div'));\n",
" canvas_div.setAttribute(\n",
" 'style',\n",
" 'border: 1px solid #ddd;' +\n",
" 'box-sizing: content-box;' +\n",
" 'clear: both;' +\n",
" 'min-height: 1px;' +\n",
" 'min-width: 1px;' +\n",
" 'outline: 0;' +\n",
" 'overflow: hidden;' +\n",
" 'position: relative;' +\n",
" 'resize: both;'\n",
" );\n",
"\n",
" function on_keyboard_event_closure(name) {\n",
" return function (event) {\n",
" return fig.key_event(event, name);\n",
" };\n",
" }\n",
"\n",
" canvas_div.addEventListener(\n",
" 'keydown',\n",
" on_keyboard_event_closure('key_press')\n",
" );\n",
" canvas_div.addEventListener(\n",
" 'keyup',\n",
" on_keyboard_event_closure('key_release')\n",
" );\n",
"\n",
" this._canvas_extra_style(canvas_div);\n",
" this.root.appendChild(canvas_div);\n",
"\n",
" var canvas = (this.canvas = document.createElement('canvas'));\n",
" canvas.classList.add('mpl-canvas');\n",
" canvas.setAttribute('style', 'box-sizing: content-box;');\n",
"\n",
" this.context = canvas.getContext('2d');\n",
"\n",
" var backingStore =\n",
" this.context.backingStorePixelRatio ||\n",
" this.context.webkitBackingStorePixelRatio ||\n",
" this.context.mozBackingStorePixelRatio ||\n",
" this.context.msBackingStorePixelRatio ||\n",
" this.context.oBackingStorePixelRatio ||\n",
" this.context.backingStorePixelRatio ||\n",
" 1;\n",
"\n",
" this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
" 'canvas'\n",
" ));\n",
" rubberband_canvas.setAttribute(\n",
" 'style',\n",
" 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
" );\n",
"\n",
" // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
" if (this.ResizeObserver === undefined) {\n",
" if (window.ResizeObserver !== undefined) {\n",
" this.ResizeObserver = window.ResizeObserver;\n",
" } else {\n",
" var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
" this.ResizeObserver = obs.ResizeObserver;\n",
" }\n",
" }\n",
"\n",
" this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
" var nentries = entries.length;\n",
" for (var i = 0; i < nentries; i++) {\n",
" var entry = entries[i];\n",
" var width, height;\n",
" if (entry.contentBoxSize) {\n",
" if (entry.contentBoxSize instanceof Array) {\n",
" // Chrome 84 implements new version of spec.\n",
" width = entry.contentBoxSize[0].inlineSize;\n",
" height = entry.contentBoxSize[0].blockSize;\n",
" } else {\n",
" // Firefox implements old version of spec.\n",
" width = entry.contentBoxSize.inlineSize;\n",
" height = entry.contentBoxSize.blockSize;\n",
" }\n",
" } else {\n",
" // Chrome <84 implements even older version of spec.\n",
" width = entry.contentRect.width;\n",
" height = entry.contentRect.height;\n",
" }\n",
"\n",
" // Keep the size of the canvas and rubber band canvas in sync with\n",
" // the canvas container.\n",
" if (entry.devicePixelContentBoxSize) {\n",
" // Chrome 84 implements new version of spec.\n",
" canvas.setAttribute(\n",
" 'width',\n",
" entry.devicePixelContentBoxSize[0].inlineSize\n",
" );\n",
" canvas.setAttribute(\n",
" 'height',\n",
" entry.devicePixelContentBoxSize[0].blockSize\n",
" );\n",
" } else {\n",
" canvas.setAttribute('width', width * fig.ratio);\n",
" canvas.setAttribute('height', height * fig.ratio);\n",
" }\n",
" canvas.setAttribute(\n",
" 'style',\n",
" 'width: ' + width + 'px; height: ' + height + 'px;'\n",
" );\n",
"\n",
" rubberband_canvas.setAttribute('width', width);\n",
" rubberband_canvas.setAttribute('height', height);\n",
"\n",
" // And update the size in Python. We ignore the initial 0/0 size\n",
" // that occurs as the element is placed into the DOM, which should\n",
" // otherwise not happen due to the minimum size styling.\n",
" if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
" fig.request_resize(width, height);\n",
" }\n",
" }\n",
" });\n",
" this.resizeObserverInstance.observe(canvas_div);\n",
"\n",
" function on_mouse_event_closure(name) {\n",
" return function (event) {\n",
" return fig.mouse_event(event, name);\n",
" };\n",
" }\n",
"\n",
" rubberband_canvas.addEventListener(\n",
" 'mousedown',\n",
" on_mouse_event_closure('button_press')\n",
" );\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseup',\n",
" on_mouse_event_closure('button_release')\n",
" );\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband_canvas.addEventListener(\n",
" 'mousemove',\n",
" on_mouse_event_closure('motion_notify')\n",
" );\n",
"\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseenter',\n",
" on_mouse_event_closure('figure_enter')\n",
" );\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseleave',\n",
" on_mouse_event_closure('figure_leave')\n",
" );\n",
"\n",
" canvas_div.addEventListener('wheel', function (event) {\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" on_mouse_event_closure('scroll')(event);\n",
" });\n",
"\n",
" canvas_div.appendChild(canvas);\n",
" canvas_div.appendChild(rubberband_canvas);\n",
"\n",
" this.rubberband_context = rubberband_canvas.getContext('2d');\n",
" this.rubberband_context.strokeStyle = '#000000';\n",
"\n",
" this._resize_canvas = function (width, height, forward) {\n",
" if (forward) {\n",
" canvas_div.style.width = width + 'px';\n",
" canvas_div.style.height = height + 'px';\n",
" }\n",
" };\n",
"\n",
" // Disable right mouse context menu.\n",
" this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
" event.preventDefault();\n",
" return false;\n",
" });\n",
"\n",
" function set_focus() {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"};\n",
"\n",
"mpl.figure.prototype._init_toolbar = function () {\n",
" var fig = this;\n",
"\n",
" var toolbar = document.createElement('div');\n",
" toolbar.classList = 'mpl-toolbar';\n",
" this.root.appendChild(toolbar);\n",
"\n",
" function on_click_closure(name) {\n",
" return function (_event) {\n",
" return fig.toolbar_button_onclick(name);\n",
" };\n",
" }\n",
"\n",
" function on_mouseover_closure(tooltip) {\n",
" return function (event) {\n",
" if (!event.currentTarget.disabled) {\n",
" return fig.toolbar_button_onmouseover(tooltip);\n",
" }\n",
" };\n",
" }\n",
"\n",
" fig.buttons = {};\n",
" var buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'mpl-button-group';\n",
" for (var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" /* Instead of a spacer, we start a new button group. */\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
" buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'mpl-button-group';\n",
" continue;\n",
" }\n",
"\n",
" var button = (fig.buttons[name] = document.createElement('button'));\n",
" button.classList = 'mpl-widget';\n",
" button.setAttribute('role', 'button');\n",
" button.setAttribute('aria-disabled', 'false');\n",
" button.addEventListener('click', on_click_closure(method_name));\n",
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
"\n",
" var icon_img = document.createElement('img');\n",
" icon_img.src = '_images/' + image + '.png';\n",
" icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
" icon_img.alt = tooltip;\n",
" button.appendChild(icon_img);\n",
"\n",
" buttonGroup.appendChild(button);\n",
" }\n",
"\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
"\n",
" var fmt_picker = document.createElement('select');\n",
" fmt_picker.classList = 'mpl-widget';\n",
" toolbar.appendChild(fmt_picker);\n",
" this.format_dropdown = fmt_picker;\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = document.createElement('option');\n",
" option.selected = fmt === mpl.default_extension;\n",
" option.innerHTML = fmt;\n",
" fmt_picker.appendChild(option);\n",
" }\n",
"\n",
" var status_bar = document.createElement('span');\n",
" status_bar.classList = 'mpl-message';\n",
" toolbar.appendChild(status_bar);\n",
" this.message = status_bar;\n",
"};\n",
"\n",
"mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
"};\n",
"\n",
"mpl.figure.prototype.send_message = function (type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"};\n",
"\n",
"mpl.figure.prototype.send_draw_message = function () {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1], msg['forward']);\n",
" fig.send_message('refresh', {});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
" var x0 = msg['x0'] / fig.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
" var x1 = msg['x1'] / fig.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0,\n",
" 0,\n",
" fig.canvas.width / fig.ratio,\n",
" fig.canvas.height / fig.ratio\n",
" );\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch (cursor) {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_message = function (fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
" for (var key in msg) {\n",
" if (!(key in fig.buttons)) {\n",
" continue;\n",
" }\n",
" fig.buttons[key].disabled = !msg[key];\n",
" fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
" if (msg['mode'] === 'PAN') {\n",
" fig.buttons['Pan'].classList.add('active');\n",
" fig.buttons['Zoom'].classList.remove('active');\n",
" } else if (msg['mode'] === 'ZOOM') {\n",
" fig.buttons['Pan'].classList.remove('active');\n",
" fig.buttons['Zoom'].classList.add('active');\n",
" } else {\n",
" fig.buttons['Pan'].classList.remove('active');\n",
" fig.buttons['Zoom'].classList.remove('active');\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function () {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message('ack', {});\n",
"};\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function (fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = 'image/png';\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src\n",
" );\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data\n",
" );\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" } else if (\n",
" typeof evt.data === 'string' &&\n",
" evt.data.slice(0, 21) === 'data:image/png;base64'\n",
" ) {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig['handle_' + msg_type];\n",
" } catch (e) {\n",
" console.log(\n",
" \"No handler for the '\" + msg_type + \"' message type: \",\n",
" msg\n",
" );\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\n",