Ábrák készítése (matplotlib)


Ebben a Notebookban bemutatjuk a python nyelv hogyan kell ábrákat készíteni a pythonban.

Adatok ábrázolása

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.

Ehhez a feladathoz a matplotlib.pyplot csomagot kell használni.

In [1]:
%pylab inline 
# Ezzel kell kezdeni, hogy megjelenjenek az ábrák a notebookban
# Az alapvető matplotlib és numpy függvényeket ez be is tölti
Populating the interactive namespace from numpy and matplotlib

A fenti utasítás a következő importálásokat tartalmazza:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt 
from matplotlib import pylab, mlab
from IPython.display import display
from IPython.core.pylabtools import figsize, getfigs
from pylab import *
from numpy import *

Egyszerű plot

In [2]:
a=[1,2,3,4] # "a" vektor megadása
plot(a) # ábrázolás
show()  # Ábra megjelenítése (ez a jupyterben el is maradhat)

Képméret megváltoztatása (figsize() parancs)

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.

In [3]:
figsize(12,12) #Képméret megváltoztatása

A következőkben bemutatjuk, hogyan lehet "szebb" ábrákat készíteni.

In [4]:
plot([1, 2, 3, 4], [1, 4, 9, 16]) # közvetlen is lehet adatokat megadni a plot-nak
xlabel('számok')                  # x tengely felirata
ylabel('másik számok')            # y tengely felirata
Out[4]:
<matplotlib.text.Text at 0x7f9e200c37b8>
In [5]:
plot([1, 2, 3, 4], [1, 4, 9, 16], linewidth=10.0) # így lehet a vonalvastagságot megváltoztatni
xlabel('számok')
ylabel('másik számok')
Out[5]:
<matplotlib.text.Text at 0x7f9e12e7c3c8>

Szín és marker megváltoztatása

Erről bővebben itt találsz infót: http://matplotlib.org/api/markers_api.html

Illetve: http://matplotlib.org/api/colors_api.html

In [6]:
figsize(6,4) # megszokott ábraméret visszaállítása
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
axis([0, 6, 0, 20])
Out[6]:
[0, 6, 0, 20]

Több görbe ábrázolása

Vagy egymás után adunk ki több plot parancsot vagy egy parancson belül is fel tudunk sorolni több adatsort.

In [7]:
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]
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]
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,
     74.088,85.184,97.336,110.592]

# piros szagatott vonalak, kék nágyzetek, és zöld háromszögek
plot(t, t, 'r--', t, u, 'bs', t, v, 'g^')
Out[7]:
[<matplotlib.lines.Line2D at 0x7f9e13d79160>,
 <matplotlib.lines.Line2D at 0x7f9e13d79400>,
 <matplotlib.lines.Line2D at 0x7f9e13d79c50>]

A subplot() parancs, avagy több kisebb képre osszuk fel a mezőt

Lehetőség van több ábrát is készíteni egymás alá/mellé. Erre szolgál a subplot parancs.

Szintaxisa: subplot(Sorok száma, Oszlopok száma, Hanyadik kép)

In [8]:
subplot(211)             # 2 sor, 1 oszlop elrendezésben az első kép
plot([1, 2, 3])
subplot(212)             # A második kép
plot([4, 5, 6])
Out[8]:
[<matplotlib.lines.Line2D at 0x7f9e12e149e8>]