Григорий Рожков, 222гр. 09.11.2010

32
Григорий Рожков, 222гр. 09.11.2010

Upload: ardice

Post on 23-Feb-2016

95 views

Category:

Documents


0 download

DESCRIPTION

Григорий Рожков, 222гр. 09.11.2010. Введение. matplotlib : библиотека языка программирования  Python связка matplotlib – NumPy кроссплатформенная библиотека API* идентичный MATLAB * API – Application Programming Interface – интерфейс программирования приложений. Введение. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Григорий Рожков, 222гр. 09.11.2010

Григорий Рожков, 222гр.09.11.2010

Page 2: Григорий Рожков, 222гр. 09.11.2010

Введение

matplotlib:

o библиотека языка программирования Python

o связка matplotlib – NumPy

o кроссплатформенная библиотека

o API* идентичный MATLAB

*API – Application Programming Interface – интерфейс программирования приложений.

Page 3: Григорий Рожков, 222гр. 09.11.2010

Введение

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

Философия

Пользователь должен иметь возможность создать простейший график, используя небольшое число

команд.

Page 5: Григорий Рожков, 222гр. 09.11.2010

Структура библиотеки

Код библиотеки можно разделить на три части.

Page 6: Григорий Рожков, 222гр. 09.11.2010

I

pylab interface – набор функций, предоставленных matplotlib.pylab, позволяющий пользователю

создавать графики с помощью кода, аналогичного коду MATLAB

Page 7: Григорий Рожков, 222гр. 09.11.2010

II

matplotlib frontend (matplotlib API) – набор классов, осуществляющий создание и последующее управление сложными

графиками, фигурами, изображениями и т.п. Этот интерфейс ничего не знает о формате

вывода объектов.

Page 8: Григорий Рожков, 222гр. 09.11.2010

III

backends - зависящие от устройства способы вывода графиков (aka рендеры),

превращающие frontend объекты в объекты, которые можно вывести на печать или

дисплей.

Page 9: Григорий Рожков, 222гр. 09.11.2010

pyplot

opyplot – набор функций, делающий matplotlib похожим на MATLAB.

oВсе, что нарисовано, - фигура.

oКаждая функция как-то по-своему меняет график.

Page 10: Григорий Рожков, 222гр. 09.11.2010

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

Точечные графики

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

Подграфик и гистограмма

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

Отрисовка фигур

ells = [Ellipse(xy=rand(2)*10, width=rand(), height=rand(), angle=rand()*360) for i in xrange(NUM)]

Page 14: Григорий Рожков, 222гр. 09.11.2010

Диаграмма

>>>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

Улучшения диаграммы

Page 16: Григорий Рожков, 222гр. 09.11.2010

Пирог

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

Элементы оформления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

Полярные координаты

subplot(211, polar=True)

Page 19: Григорий Рожков, 222гр. 09.11.2010

Интерактивные графики

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

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

Функция Розенброка

F(x,y) = 100.(y - x2)2 + (1 - x)2

Page 22: Григорий Рожков, 222гр. 09.11.2010

Colormaps

Page 23: Григорий Рожков, 222гр. 09.11.2010

Filters

Page 24: Григорий Рожков, 222гр. 09.11.2010

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

Структура matplotlib API

Интерфейс matplotlib состоит из трех слоев.

Page 26: Григорий Рожков, 222гр. 09.11.2010

I

matplotlib.backend_bases.FigureCanvas – область, на которой рисуется фигура.

Page 27: Григорий Рожков, 222гр. 09.11.2010

II

matplotlib.backend_bases.Renderer – объект, который знает как рисовать

на FigureCanvas.

Page 28: Григорий Рожков, 222гр. 09.11.2010

III

matplotlib.artist.Artist – объект, который знает, как использовать

Renderer, чтобы нарисовать что-либо на FigureCanvas.

Page 29: Григорий Рожков, 222гр. 09.11.2010

Структура matplotlib API

o FigureCanvas и Renderer обрабатывают все взаимодействия внутри программы

o Artist отвечает за конструкции более высокого уровня – такие как представление фигур, линий и текста на экране, и их взаимного расположения.

o Сам пользователь около 95% своего времени проводит взаимодействуя с Artist’ом.

Page 30: Григорий Рожков, 222гр. 09.11.2010

Artists

Существуют два типа Artist:

I. primitive – представляет собой обычные графические объекты, такие как линии, текст, 2D графики и т.п.

II. containers – места для размещения primitive (Axis, Axes и Figure).

Page 31: Григорий Рожков, 222гр. 09.11.2010

Использование matplotlibmatplotlib используется многими людьми во многих областях:

o автоматическая генерация PostScript файлов для отсылки на печать

o генерация png и gif – изображений для динамически генерирующихся веб-страниц

o для математических исследований

Page 32: Григорий Рожков, 222гр. 09.11.2010

Cпасибо за внимание!