{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

Plot, fényképek (matplotlib)

\n", "
\n", "\n", "\n", "Ebben a Notebookban bemutatjuk a python nyelv hogyan kell ábrákat készíteni a pythonban. Illetve megmutatjuk, hogy kell fényképeket megjeleníteni a pythonban." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adatok ábrázolása\n", "\n", "Ez hasonlóan működik, mint a gnuplot, viszont itt számtalan dolgot kell beállítani, amire a gnuplotban nem volt szükség, mivel az a program alapból tudta azokat.\n", "\n", "Ehhez a feladathoz a **`matplotlib.pyplot`** csomagot kell használni." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%pylab inline \n", "# Ezzel kell kezdeni, hogy megjelenjenek az ábrák a notebookban\n", "# Az alapvető matplotlib és numpy függvényeket ez be is tölti" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A fenti utasítás a következő importálásokat tartalmazza:\n", ">```python\n", "import numpy as np\n", "import matplotlib\n", "import matplotlib.pyplot as plt \n", "from matplotlib import pylab, mlab\n", "```\n", "```python\n", "from IPython.display import display\n", "from IPython.core.pylabtools import figsize, getfigs\n", "```\n", "```python\n", "from pylab import *\n", "from numpy import *\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Egyszerű plot" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a=[1,2,3,4] # \"a\" vektor megadása\n", "plot(a) # ábrázolás\n", "show() # Ábra megjelenítése (ez a jupyterben el is maradhat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Képméret megváltoztatása (`figsize()` parancs)\n", "\n", "A megjelenő kép méretét a `figsize(X,Y)` paranccsal lehet megváltoztatni. Fontos megjegyezni, hogy ez minden képre érvényes lesz, ami a parancs után áll. Ha csak 1 adott képet akarunk megnövelni, a kép után újra ki kell adni a figsize parancsot a kisebb méret visszaállításához." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "figsize(12,12) #Képméret megváltoztatása" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A következőkben bemutatjuk, hogyan lehet \"szebb\" ábrákat készíteni." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plot([1, 2, 3, 4], [1, 4, 9, 16]) # közvetlen is lehet adatokat megadni a plot-nak\n", "xlabel('számok') # x tengely felirata\n", "ylabel('másik számok') # y tengely felirata" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plot([1, 2, 3, 4], [1, 4, 9, 16], linewidth=10.0) # így lehet a vonalvastagságot megváltoztatni\n", "xlabel('számok')\n", "ylabel('másik számok')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Szín és marker megváltoztatása\n", "\n", "Erről bővebben itt találsz infót: http://matplotlib.org/api/markers_api.html\n", "\n", "Illetve: http://matplotlib.org/api/colors_api.html" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "figsize(6,4) # megszokott ábraméret visszaállítása\n", "plot([1,2,3,4], [1,4,9,16], 'ro') # A szín és a \"marker\" típusa is lehet más: piros körök\n", "axis([0, 6, 0, 20])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Több görbe ábrázolása\n", "\n", "Vagy egymás után adunk ki több plot parancsot vagy egy parancson belül is fel tudunk sorolni több adatsort." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "t = [0.,0.2,0.4,0.6,0.8,1.,1.2,1.4,1.6,1.8,2.,2.2,2.4,2.6,2.8,3.,3.2,3.4,3.6,3.8,4.,4.2,4.4,4.6,4.8]\n", "u = [0.0,0.04,0.16,0.36,0.64,1.0,1.44,1.96,2.56,3.24,4.0,4.84,5.76,6.76,7.84,9.0,10.24,11.56,12.96,14.44,16.0,17.64,19.36,21.16,23.04]\n", "v = [0.0,0.008,0.064,0.216,0.512,1.0,1.728,2.744,4.096,5.832,8.0,10.648,13.824,17.576,21.952,27.0,32.768,39.304,46.656,54.872,64.0,\n", " 74.088,85.184,97.336,110.592]\n", "\n", "# piros szagatott vonalak, kék nágyzetek, és zöld háromszögek\n", "plot(t, t, 'r--', t, u, 'bs', t, v, 'g^')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A `subplot()` parancs, avagy több kisebb képre osszuk fel a mezőt\n", "\n", "Lehetőség van több ábrát is készíteni egymás alá/mellé. Erre szolgál a `subplot` parancs.\n", "\n", "Szintaxisa: subplot(Sorok száma, Oszlopok száma, Hanyadik kép)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "subplot(211) # 2 sor, 1 oszlop elrendezésben az első kép\n", "plot([1, 2, 3])\n", "subplot(212) # A második kép\n", "plot([4, 5, 6])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Bitmap képek megjelenítése\n", "\n", "Most megmutatjuk, hogy kell \"fényképeket\" megjeleníteni a pythonnal.\n", "\n", "Ehhez szükségünk van a **`matplotlib.image`** csomagra. (Ez is betöltődik a `%pylab inline` paranccsal)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "figsize(12,12) #Képméret megváltoztatása\n", "img=imread(\"/opt/conda/share/doc/tiff-4.0.6/html/images/cat.gif\") # kép beolvasása az img változóba" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "shape(img)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "imshow(img) # kép megjelenítése a képernyőn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Van lehetőség nem a saját gépünkön levő képek ábrázolására is. \n", "\n", "Viszont itt felhívjuk a figyelmet, hogy az internetről belinkelt képeknél hibák léphetnek fel a metaadatok küldése során. Ilyen hiba, hogy a küldő fél jelzi, hogy png formátumú képet fog küldeni, de jpg-t küld. Ezzel megzavarja a python-t és hibát fogunk kapni." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "cica=imread(\"http://data.whicdn.com/images/20949608/tumblr_lx9ehwSV2r1qbk3f2o1_500_large.png\")\n", "plt.imshow(cica)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "imread(\"http://pctrs.network.hu/clubpicture/1/4/1/9/_/cuki_cica_1419331_7946.jpg\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A megoldás, hogy \"bash\"-sal letöltjük a képet, majd azt nyitjuk meg a pythonnal." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%%bash \n", "# Így lehet bash parancsokat kiadni a Jupyterben\n", "wget http://pctrs.network.hu/clubpicture/1/4/1/9/_/cuki_cica_1419331_7946.jpg -O cica2.jpg" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [], "source": [ "cica2=imread(\"./cica2.jpg\")\n", "plt.imshow(cica2)" ] } ], "metadata": { "hide_input": false, "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.5.1" }, "latex_envs": { "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 0 }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": false, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 0 }