Григорий Рожков, 222гр. 09.11.2010
DESCRIPTION
Григорий Рожков, 222гр. 09.11.2010. Введение. matplotlib : библиотека языка программирования Python связка matplotlib – NumPy кроссплатформенная библиотека API* идентичный MATLAB * API – Application Programming Interface – интерфейс программирования приложений. Введение. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/1.jpg)
Григорий Рожков, 222гр.09.11.2010
![Page 2: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/2.jpg)
Введение
matplotlib:
o библиотека языка программирования Python
o связка matplotlib – NumPy
o кроссплатформенная библиотека
o API* идентичный MATLAB
*API – Application Programming Interface – интерфейс программирования приложений.
![Page 3: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/3.jpg)
Введение
matplotlib:
oнаписан на Python
o background – на C
o автор – John Hunter
o поддерживаются версии Python 2.4 – 2.6
o tries to make easy things easy and hard things possible.
![Page 4: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/4.jpg)
Философия
Пользователь должен иметь возможность создать простейший график, используя небольшое число
команд.
![Page 5: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/5.jpg)
Структура библиотеки
Код библиотеки можно разделить на три части.
![Page 6: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/6.jpg)
I
pylab interface – набор функций, предоставленных matplotlib.pylab, позволяющий пользователю
создавать графики с помощью кода, аналогичного коду MATLAB
![Page 7: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/7.jpg)
II
matplotlib frontend (matplotlib API) – набор классов, осуществляющий создание и последующее управление сложными
графиками, фигурами, изображениями и т.п. Этот интерфейс ничего не знает о формате
вывода объектов.
![Page 8: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/8.jpg)
III
backends - зависящие от устройства способы вывода графиков (aka рендеры),
превращающие frontend объекты в объекты, которые можно вывести на печать или
дисплей.
![Page 9: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/9.jpg)
pyplot
opyplot – набор функций, делающий matplotlib похожим на MATLAB.
oВсе, что нарисовано, - фигура.
oКаждая функция как-то по-своему меняет график.
![Page 10: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/10.jpg)
pyplotПростейшая программа, рисующая график выглядит так:>>>import matplotlib.pyplot as plt>>>plt.plot ([1, 2, 3, 4])>>>plt.ylabel (‘some numbers’)>>>plt.show ()
Немного изменив ее, получаем:>>> import matplotlib.pyplot as plt>>> plt.plot ([0, 1, 2, 1, 2])>>> plt.xlabel (“you read this^^”)>>> plt.arrow (0, 0, 2, 1)>>> plt.axis([0, 10, 0, 10])>>>plt.annotate(“you are here!”, xy=(2, 2), xytext=(5, 5) arrowprops=dict(facecolor=‘red', shrink=0.05))>>>plt.grid (True)>>> plt.show ()
![Page 11: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/11.jpg)
Точечные графики
import matplotlib.pyplot as plt plt.plot([1,2,3,4], [1,4,9,16], 'ro') plt.axis([0, 6, 0, 20])plt.show ()
import numpy as np import matplotlib.pyplot as plt # evenly sampled time at 200ms intervals t = np.arange(0., 5., 0.2) # red dashes, blue squares and green triangles plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')plt.show ()
![Page 12: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/12.jpg)
Подграфик и гистограмма
import numpy as np import matplotlib.pyplot as plt mu, sigma = 100, 15 x = mu + sigma * np.random.randn(10000) # the histogram of the data n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75) plt.xlabel('Smarts') plt.ylabel('Probability') plt.title('Histogram of IQ') plt.text(60, .025, r'$\mu=100,\ \sigma=15$')plt.axis([40, 160, 0, 0.03]) plt.grid(True)plt.show ()
import numpy as np import matplotlib.pyplot as plt def f(t): return np.exp(-t) * np.cos(2*np.pi*t)
t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) plt.figure(1) plt.subplot(211) plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k') plt.subplot(212) plt.plot(t2, np.cos(2*np.pi*t2), 'r--')plt.show()
![Page 13: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/13.jpg)
Отрисовка фигур
ells = [Ellipse(xy=rand(2)*10, width=rand(), height=rand(), angle=rand()*360) for i in xrange(NUM)]
![Page 14: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/14.jpg)
Диаграмма
>>>plt.legend( (rects1[0], rects2[0]), ('Men', 'Women') )
>>>rects1 = plt.bar(ind, menMeans, width, color='r', yerr=menStd, error_kw=dict(elinewidth=6, ecolor='pink'))
![Page 15: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/15.jpg)
Улучшения диаграммы
![Page 16: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/16.jpg)
Пирог
pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)title('Raining Hogs and Dogs', bbox={'facecolor':'0.8', 'pad':5})
![Page 17: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/17.jpg)
Элементы оформленияimport numpy as np import matplotlib.pyplot as plt
styles = mpatch.BoxStyle.get_styles()figheight = (len(styles)+.5)fig1 = plt.figure(1, (4/1.5, figheight/1.5))fontsize = 0.3 * 72
for i, (stylename, styleclass) in enumerate(styles.items()): fig1.text(0.5, (float(len(styles)) - 0.5 - i)/figheight, stylename, ha="center", size=fontsize, transform=fig1.transFigure, bbox=dict(boxstyle=stylename, fc="w", ec="k"))plt.draw()plt.show()
![Page 18: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/18.jpg)
Полярные координаты
subplot(211, polar=True)
![Page 19: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/19.jpg)
Интерактивные графики
def toggle_images(event): 'toggle the visible state of the two images' if event.key != 't': return b1 = im1.get_visible() b2 = im2.get_visible() im1.set_visible(not b1) im2.set_visible(not b2) draw()
![Page 20: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/20.jpg)
3D графикиfrom mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import LinearLocator, FixedLocator, FormatStrFormatter import matplotlib.pyplot as plt import numpy as np
fig = plt.figure() ax = fig.gca (projection='3d') X = np.arange (-5, 5, 0.25) Y = np.arange (-5, 5, 0.25) X, Y = np.meshgrid (X, Y) R = np.sqrt (X**2 + Y**2) Z = np.sin(R) surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
cmap=cm.jet, linewidth=0, antialiased=False) ax.set_zlim3d(-1.01, 1.01) ax.w_zaxis.set_major_locator(LinearLocator(10)) ax.w_zaxis.set_major_formatter(FormatStrFormatter('%.03f')) fig.colorbar(surf, shrink=0.5, aspect=5) plt.show()
![Page 21: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/21.jpg)
Функция Розенброка
F(x,y) = 100.(y - x2)2 + (1 - x)2
![Page 22: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/22.jpg)
Colormaps
![Page 23: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/23.jpg)
Filters
![Page 24: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/24.jpg)
LaTeX
title(r"\TeX\ is Number $\displaystyle\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$!", fontsize=16, color='r')
rc('text', usetex=True)
![Page 25: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/25.jpg)
Структура matplotlib API
Интерфейс matplotlib состоит из трех слоев.
![Page 26: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/26.jpg)
I
matplotlib.backend_bases.FigureCanvas – область, на которой рисуется фигура.
![Page 27: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/27.jpg)
II
matplotlib.backend_bases.Renderer – объект, который знает как рисовать
на FigureCanvas.
![Page 28: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/28.jpg)
III
matplotlib.artist.Artist – объект, который знает, как использовать
Renderer, чтобы нарисовать что-либо на FigureCanvas.
![Page 29: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/29.jpg)
Структура matplotlib API
o FigureCanvas и Renderer обрабатывают все взаимодействия внутри программы
o Artist отвечает за конструкции более высокого уровня – такие как представление фигур, линий и текста на экране, и их взаимного расположения.
o Сам пользователь около 95% своего времени проводит взаимодействуя с Artist’ом.
![Page 30: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/30.jpg)
Artists
Существуют два типа Artist:
I. primitive – представляет собой обычные графические объекты, такие как линии, текст, 2D графики и т.п.
II. containers – места для размещения primitive (Axis, Axes и Figure).
![Page 31: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/31.jpg)
Использование matplotlibmatplotlib используется многими людьми во многих областях:
o автоматическая генерация PostScript файлов для отсылки на печать
o генерация png и gif – изображений для динамически генерирующихся веб-страниц
o для математических исследований
![Page 32: Григорий Рожков, 222гр. 09.11.2010](https://reader036.vdocuments.pub/reader036/viewer/2022081420/568164da550346895dd72a78/html5/thumbnails/32.jpg)
Cпасибо за внимание!