{ "nbformat": 4, "nbformat_minor": 0, "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.4" }, "colab": { "name": "kl_py_comprehension.ipynb", "provenance": [], "collapsed_sections": [], "include_colab_link": true } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "TpsGkBZaaQH0", "colab_type": "text" }, "source": [ "

\n", " \n", " \n", "

\n", "\n", "\n", "

\n", "\n", "\n", "\n", "# Python alapok (Comprehension)\n", "\n", "\n", "\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": { "id": "ELQIvfc_aQH3", "colab_type": "text" }, "source": [ "# Comprehension\n", "\n", "A comprehension egy olyan nyelvi elem a Pythonban, amely szekvenciák tömör megadását teszi lehetővé. \n", "\n", "A comprehension némileg hasonlít a matematikában alkalmazott, tulajdonság alapján történő halmazmegadásra\n", "\n", "Ez a szerkezet úgy néz ki, hogy egy kifejezés és mögötte a for-os kifejezés.\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "--_yKST0aQH4", "colab_type": "code", "colab": {}, "outputId": "1a5f3e76-e84f-45ea-decc-3cacfb1d6ae7" }, "source": [ "## Feltétel nélküli comprehension\n", "# Állítsuk elő az első 10 négyzetszám listáját gyűjtőváltozó használatával!\n", "print('-------00 LIST lista--------')\n", "l = []\n", "for i in range(1, 11):\n", " l.append(i**2)\n", "print(l)\n", "\n", "print('------1---------')\n", "\n", "# Ugyanez tömörebben, lista comprehension-nel:\n", "l = [i**2 for i in range(1, 11)]\n", "print(l)\n", "\n", "print('-------11 SET halmaz--------')\n", "\n", "# Állítsuk el® az els® 10 négyzetszám halmazát gy¶jt®változó használatával!\n", "s = set()\n", "for i in range(1, 11):\n", " s.add(i**2)\n", "print(s)\n", "\n", "print('------2---------')\n", "\n", "# Ugyanez tömörebben, halmaz comprehension-nel:\n", "s = {i**2 for i in range(1, 11)}\n", "print(s)\n", "\n", "print('-------22 DIR szótár--------')\n", "\n", "# Állítsunk el® egy szótárat, amely az angol kisbetús magánhangzókhoz\n", "# hozzárendeli az ASCII-kódjukat! Használjunk gyűjtőváltozót!\n", "d = {}\n", "for ch in 'aeiou':\n", " d[ch] = ord(ch)\n", "print(d)\n", "\n", "print('------3---------')\n", "\n", "# Ugyanez tömörebben, szótár comprehension-nel:\n", "d = {ch: ord(ch) for ch in 'aeiou'}\n", "print(d)\n", "\n", "\n", "print('-------33--------')\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "-------00 LIST lista--------\n", "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", "------1---------\n", "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n", "-------11 SET halmaz--------\n", "{64, 1, 4, 36, 100, 9, 16, 49, 81, 25}\n", "------2---------\n", "{64, 1, 4, 36, 100, 9, 16, 49, 81, 25}\n", "-------22 DIR szótár--------\n", "{'a': 97, 'e': 101, 'i': 105, 'o': 111, 'u': 117}\n", "------3---------\n", "{'a': 97, 'e': 101, 'i': 105, 'o': 111, 'u': 117}\n", "-------33--------\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "mMQjptgwaQH8", "colab_type": "code", "colab": {} }, "source": [ "Feltételes comprehension." ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "vIlaQs4WaQH_", "colab_type": "code", "colab": {}, "outputId": "4bd82526-21d9-4521-bed9-b0944275989f" }, "source": [ "# Feltételes lista comprehension.\n", "print([i**2 for i in range(1, 11) if i % 2 == 0])\n", "print('-------1--------')\n", "\n", "# Feltételes halmaz comprehension.\n", "print({i**2 for i in range(1, 11) if i % 2 == 0})\n", "print('-------2--------')\n", "\n", "# Feltételes szótár comprehension.\n", "print({ch: ord(ch) for ch in 'aeiou' if ch != 'u'})\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "[4, 16, 36, 64, 100]\n", "-------1--------\n", "{64, 100, 4, 36, 16}\n", "-------2--------\n", "{'a': 97, 'e': 101, 'i': 105, 'o': 111}\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "ki24bNIiaQIC", "colab_type": "text" }, "source": [ "# List Comprehension" ] }, { "cell_type": "code", "metadata": { "id": "DMFRyV2SaQID", "colab_type": "code", "colab": {}, "outputId": "e6d8604a-df50-4944-f1dc-f2b869458cb6" }, "source": [ "list1 = [i**2 for i in range(1,11)]\n", "print(list1)\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "vwt0fD3vaQIG", "colab_type": "code", "colab": {}, "outputId": "0fa2d1aa-8dd4-4bb0-d06a-061eabdea043" }, "source": [ "list2 = [i**2 for i in range (20) if i % 2 ==0 ]\n", "print(list2)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "FFgWjhSOaQIJ", "colab_type": "code", "colab": {}, "outputId": "40f849fe-7664-4ca8-ba4b-de383b9f8859" }, "source": [ "import glob, os\n", "filenames = [os.path.basename(fname)[5:16] for fname in glob.glob(\"*.ipynb\")]\n", "print (sorted(set(filenames)))\n" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "[' ( ).ipynb', ' ).ipynb', ' Function.i', ' _method.ip', '.ipynb', 'Nets_Cifar_', '_CIFAR10_Ea', '_ConvNet_So', '_Intro_to_M', '_MNIST_Eage', '_Pre_Made_E', '_interakcio', '_regexp.ipy', '_sheet04.ip', 'a func.ipyn', 'act.ipynb', 'at04.ipynb', 'der.ipynb', 'ehension.ip', 'ergy_minimi', 'ex Number.i', 'g.ipynb', 'gex.ipynb', 'ial-1st-exp', 'ial-pipelin', 'ikit.ipynb', 'ions Exampl', 'ipynb', 'j.ipynb', 'lassificati', 'm.ipynb', 'mpy_perform', 'ntroduction', 'otlib.ipynb', 'pelda00.ipy', 'pelda01.ipy', 'pelda02.ipy', 'pelda03.ipy', 'pelda04.ipy', 'pelda05.ipy', 'pelda06.ipy', 'pelda07.ipy', 'pelda08.ipy', 'pelda09.ipy', 'pelda10.ipy', 'ples.ipynb', 'ptron.ipynb', 'r.ipynb', 'rial.ipynb', 'ring.ipynb', 's.ipynb', 'spy.ipynb', 'ssion-autom', 'tional Stat', 'tions handi', 'y.ipynb', 'ynb']\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "r2ujtv5PaQIM", "colab_type": "text" }, "source": [ "# Set Comprehension" ] }, { "cell_type": "code", "metadata": { "id": "h89moWmsaQIN", "colab_type": "code", "colab": {}, "outputId": "f89ec542-a09b-46fb-b836-d2e06e4181db" }, "source": [ "li = ['Afridi',4,0,2]\n", "set1 = {i for i in li }\n", "print(set1)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "{0, 2, 'Afridi', 4}\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "tF4XEqTEaQIQ", "colab_type": "code", "colab": {}, "outputId": "92ad9bff-b8fc-411d-c3ba-9b99fa6179c1" }, "source": [ "li2 = ['Afridi','Khan']\n", "set2 = {i for i in li2 if len(i) > 1}\n", "print(set2)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "{'Afridi', 'Khan'}\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "UpXxi3YcaQIW", "colab_type": "code", "colab": {}, "outputId": "1647172b-5940-4a39-d884-75f39091ccbe" }, "source": [ "import glob, os\n", "filenames = set(os.path.basename(fname)[5:16] for fname in glob.glob(\"*.ipynb\"))\n", "print (sorted(filenames))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "[' ( ).ipynb', ' ).ipynb', ' Function.i', ' _method.ip', '.ipynb', 'Nets_Cifar_', '_CIFAR10_Ea', '_ConvNet_So', '_Intro_to_M', '_MNIST_Eage', '_Pre_Made_E', '_interakcio', '_regexp.ipy', '_sheet04.ip', 'a func.ipyn', 'act.ipynb', 'at04.ipynb', 'der.ipynb', 'ehension.ip', 'ergy_minimi', 'ex Number.i', 'g.ipynb', 'gex.ipynb', 'ial-1st-exp', 'ial-pipelin', 'ikit.ipynb', 'ions Exampl', 'ipynb', 'j.ipynb', 'lassificati', 'm.ipynb', 'mpy_perform', 'ntroduction', 'otlib.ipynb', 'pelda00.ipy', 'pelda01.ipy', 'pelda02.ipy', 'pelda03.ipy', 'pelda04.ipy', 'pelda05.ipy', 'pelda06.ipy', 'pelda07.ipy', 'pelda08.ipy', 'pelda09.ipy', 'pelda10.ipy', 'ples.ipynb', 'ptron.ipynb', 'r.ipynb', 'rial.ipynb', 'ring.ipynb', 's.ipynb', 'spy.ipynb', 'ssion-autom', 'tional Stat', 'tions handi', 'y.ipynb', 'ynb']\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "lkKd5XFHaQIY", "colab_type": "text" }, "source": [ "# Dictionary Comprehension" ] }, { "cell_type": "markdown", "metadata": { "id": "IhyRePy7aQIZ", "colab_type": "text" }, "source": [ "### access Asci value " ] }, { "cell_type": "code", "metadata": { "id": "wDk8jAYmaQIa", "colab_type": "code", "colab": {}, "outputId": "e81b4247-0c6d-49be-ffc5-67172ecfeb68" }, "source": [ "d = {i : chr(i) for i in range(65,90)}\n", "print(d)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "{65: 'A', 66: 'B', 67: 'C', 68: 'D', 69: 'E', 70: 'F', 71: 'G', 72: 'H', 73: 'I', 74: 'J', 75: 'K', 76: 'L', 77: 'M', 78: 'N', 79: 'O', 80: 'P', 81: 'Q', 82: 'R', 83: 'S', 84: 'T', 85: 'U', 86: 'V', 87: 'W', 88: 'X', 89: 'Y'}\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "zqj9YyAOaQIc", "colab_type": "text" }, "source": [ "### access Numbers" ] }, { "cell_type": "code", "metadata": { "id": "Q-yXCNuvaQId", "colab_type": "code", "colab": {}, "outputId": "82297532-2446-41c9-9b89-b7f3f8a323b1" }, "source": [ "d = {i : i**2 for i in range(1,11)}\n", "print(d)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "{1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18, 10: 20}\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "jrBfoasyaQIg", "colab_type": "text" }, "source": [ "---\n", "\n", "\n", "# Grafikai megjelenítés alapok\n", "\n", "\n", "## Matplotlib modul használata\n", "\n", "A matplotlib pythonban megírt mátrix kezelő modul, függvényeinek funkciói nagyban megegyeznek a MatLab-ban korábban megismert függvényekkel. \n", "\n", "A matplotlib-et modulként kell importálni a python gyökérkönyvtárból a következő módon:\n", "\n", "`import matplotlib`\n", "\n", "Lehetőségünk van a modulokon belüli funkciók önálló használatának megkönnyítésére, a következő példában a pyplot függvényhez tudunk rövidített definíció szerű nevet készíteni:\n", "\n", "`import matplotlib.pyplot as plt`\n", "\n", "\n", "### Numpy és String -> Numpy konverzió, Numpy adatformátum mentése\n", "\n", "A numpy a matplotlib szerves részét képezi, mivel e modul nélkül a python stringjeit nem lehetne, vagy csak igen nehéz erőfeszítések mellett a matplotlib számára értelmezhető formátumra alakítani.\n", "\n", "A matplotlib számára értelmezhető formátumot a következő képpen tudjuk elérni:\n", "`e = np.fromstring(var, dtype=float, sep=',')`\n", " \n", " \n", " \n", "A „fromstring” függvénynek három fő argumentuma van:\n", "\n", "„var” -a kívánt változó sztring, amit numpy formátumúvá szeretnénk alakítani\n", "\n", "„dtype” -a formázás után kívánt adattípus\n", "\n", "„sep” -az átalakítandó sztringben lévő számok közötti szeparátor karakter \n", "\n", "\n", "\n", "### Numpy adatformátumba való mentés \n", "\n", "Igen gyakran előfordul, hogy bizonyos adatokat újra föl szeretnénk használni a későbbiekben,\n", "azonban globális változókban való tárolásuk igen bonyolult problémákat vethet fel, ezeknek a\n", "problémák kezelésére nyújthat igen nagy segítséget a ’numpy’ file illetve adatkezelő függvényei.\n", "\n", "Numpy adatformátumú változó mentése ’npy’ formátumú file-ba\n", "\n", "`np.save(\"wf_hp.npy\", z)`\n", "\n", "Numpy adatformátumú változó visszahívása ’npy’ formátumú file-ból\n", "`z = np.load(\"wf_hp.npy\")`\n", "\n", "Az első mentésnél létrehozza az ‘np.save’ művelet a ‘wf_hp.npy’ file-t.\n", "\n", "\n", "\n", "\n", "### PyPlot a matplotlibben\n", "\n", "Ez a Class tartalmazza a legfontosabb grafikai függvényeket a matplotlib-ben. Ezeknek a\n", "függvényeknek a funkciói nagyban megegyeznek a MatLab-ban már korábban megismert függvények\n", "paramétereivel.\n", "\n", "\n", "### PyPlot plot\n", "Ez a legegyszerűbb virtuális megjelenítés, ennél a függvénynél összesen kettő bemeneti változó van.\n", "\n", "`import matplotlib.pyplot as plt` #use the pyplot this name\n", "\n", "x = np.fromstring(freq, dtype=float, sep=',')\n", "y = np.fromstring(trac, dtype=float, sep=',')\n", "\n", "\n", "plt.figure(1) #ploting only an empty picture\n", "plt.plot(x, y) #plot the x <> y diagram\n", "plt.ion() #enable to refresh the chart\n", "plt.show() #show the figure 1 with the x <> y plot\n", "\n", "\n", "Kitétel: az x és y numpy tömb elemeinek számának meg kell egyeznie!\n", "\n", "\n", "### PyPlot imshow\n", "Ez a függvény több rekordból álló numpy tömböt képes megjeleníteni, igen egyszerűen alkalmazható\n", "spektrum monitoring rendszereknél úgynevezett waterfall diagramm készítésére.\n", "\n", "x = np.fromstring(freq, dtype=float, sep=',')\n", "y = np.fromstring(freq1, dtype=float, sep=',')\n", "z = np.vstack((x, y)) #concetanate the x and y to a numpy format block \n", "\n", "plt.imshow(Z, cmap='jet') #the Z is an numpy format block\n", "plt.ion()\n", "plt.show()\n", "\n", "Kitétel: a z numpy tömb különböző sorainak elemszámának egyenlőnek kell lennie a másik rekord elemszámával! \n", "\n", "\n", "\n", "---\n" ] }, { "cell_type": "code", "metadata": { "id": "jJOvcG9yaQIg", "colab_type": "code", "colab": {}, "outputId": "301d79dd-7137-484d-c893-9ccab7745673" }, "source": [ "from matplotlib.pyplot import plot\n", "plot([0,1,0,1])" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": { "tags": [] }, "execution_count": 46 }, { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "aQvHWvndaQIj", "colab_type": "code", "colab": {}, "outputId": "d799e7c4-b121-40b9-ab08-dbce8572b063" }, "source": [ "import numpy as np # Matematikai számításokhoz használt függvények és adatstruktúrák a numpy modulból\n", "import matplotlib.pyplot as plt # Ábrák készítéséhez használható függvények\n", "\n", "%matplotlib nbagg \n", "# ne külön ablakba rajzolja ki (ha hibát ír ki akkor 'nbagg' helyett 'inline' vagy 'notebook' szót írni)\n", "x = np.arange(100)\n", "print ('x alakja:', x.shape) # Így irhatunk ki dolgokat a képernyőre\n", "\n", "w = np.random.rand(100)\n", "print ('w alakja: ', w.shape)\n", "\n", "plt.figure()\n", "plt.plot(x, w) ## megjelenítés" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "x alakja: (100,)\n", "w alakja: (100,)\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\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('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", "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 = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(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 (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.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 = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('
');\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\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", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('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", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\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", " // 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", "\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= 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('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "display_data", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "DfzscNXCaQIp", "colab_type": "code", "colab": {}, "outputId": "48470998-3404-4307-ca4f-5e40c54e384e" }, "source": [ "## A becsült szórás függése a mintaszámtól:\n", "\n", "plt.plot(np.sqrt(np.cumsum((w-0.5)**2) / (x+1)))" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\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('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", "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 = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(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 (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.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 = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('
');\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\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", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('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", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\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", " // 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", "\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= 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('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "display_data", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:4: MatplotlibDeprecationWarning: \n", "The 'normed' kwarg was deprecated in Matplotlib 2.1 and will be removed in 3.1. Use 'density' instead.\n", " after removing the cwd from sys.path.\n" ], "name": "stderr" } ] }, { "cell_type": "code", "metadata": { "id": "2sS0f539aQIt", "colab_type": "code", "colab": {}, "outputId": "d7c03499-88b2-4e44-c42c-04a3897368c6" }, "source": [ "## Minta generálása normális eloszlásból:\n", "\n", "w2 = np.random.normal(0, 1, size=10000)\n", "\n", "plt.figure()\n", "(n, bins, patches) = plt.hist(w2, bins=30, normed=True)\n" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\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('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", "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 = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(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 (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.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 = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('
');\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\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", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('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", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\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", " // 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", "\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= 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('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "display_data", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:9: MatplotlibDeprecationWarning: \n", "The 'normed' kwarg was deprecated in Matplotlib 2.1 and will be removed in 3.1. Use 'density' instead.\n", " if __name__ == '__main__':\n" ], "name": "stderr" }, { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": { "tags": [] }, "execution_count": 15 } ] }, { "cell_type": "code", "metadata": { "id": "B2qTA2xNaQI0", "colab_type": "code", "colab": {}, "outputId": "2d1a400a-bec2-4270-ccf1-93d2e741e5fb" }, "source": [ "## Több minta generálása uniform eloszlásból:\n", "\n", "w4 = np.random.random(10000)\n", "\n", "plt.figure()\n", "(n, bins, patches) = plt.hist(w4, bins=30, normed=True)\n" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\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('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", "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 = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(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 (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.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 = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('
');\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\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", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('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", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\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", " // 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", "\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= 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('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "display_data", "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "C:\\Users\\User\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:5: MatplotlibDeprecationWarning: \n", "The 'normed' kwarg was deprecated in Matplotlib 2.1 and will be removed in 3.1. Use 'density' instead.\n", " \"\"\"\n" ], "name": "stderr" } ] }, { "cell_type": "code", "metadata": { "id": "f7nxuRhSaQI5", "colab_type": "code", "colab": {}, "outputId": "6eb02edd-7b94-4467-d5f2-9994fd717804" }, "source": [ "## Tíz uniform eloszlású valószínűségi változó átlagának eloszlása:\n", "\n", "\n", "w410 = np.random.rand(10000, 10)\n", "plt.figure()\n", "(n, bins, patches) = plt.hist(w410.sum(axis=1)/10., bins=30, normed=True)\n", "\n" ], "execution_count": 0, "outputs": [ { "output_type": "display_data", "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\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('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", "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 = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(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 (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.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 = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\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 nav_element = $('
');\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\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", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('