Лекция Основы алгоритмизации. Алгоритмы и величины. Этапы решения задачи на ЭВМ



бет31/37
Дата16.01.2022
өлшемі0,96 Mb.
#129365
түріЛекция
1   ...   27   28   29   30   31   32   33   34   ...   37
Байланысты:
Все лекции

Небольшая сноска: убедитесь в том, что используете скрипт, где вы создаете группу фигур. Вам нужно будет явно закрыть каждый из них, во избежание ошибки MemoryErrorplt.close(), сам по себе, закрывает текущую фигуру, plt.close(num) закрывает фигуру под номером num, а plt.close(‘all’) закрывает все окна фигур.

Python




1

2


plt.close('all')

print(get_all_figures()) # []


Игра красок: imshow() и matshow()


В то время, как ax.plot() является одним из основных методов построения графиков на объектах Axes, существует целый ряд других (Мы использовали ax.stackplot() ранее, со списком остальных вы можете ознакомиться здесь).

Одна группа популярных использовании методов – это imshow() and matshow(), причем последний используется в качестве обертки первого. Они полезны в тех случаях, когда необработанный численный массив будет визуализирован как цветная таблица.

Для начала, давайте создадим две отдельные таблицы с какой-нибудь миловидной индексацией NumPy используя arange:

Python




1

2

3



4

5


import numpy as np

 

x = np.diag(np.arange(2, 12))[::-1]



x[np.diag_indices_from(x[::-1])] = np.arange(2, 12)

x2 = np.arange(x.size).reshape(x.shape)



Далее, мы можем сопоставить их с собственными изображениями. В конкретном данном случае, мы выключаем (нажав “off”) все метки и штрихи осей, пользуясь пониманием словаря и передаем результат к ax.tick_params():

Python




1

2

3



4

5


sides = ('left', 'right', 'top', 'bottom')

nolabels = {s: False for s in sides}

nolabels.update({'label%s' % s: False for s in sides})

 

print(nolabels)



Результат:

Python




1

2


{'left': False, 'right': False, 'top': False, 'bottom': False, 'labelleft': False,

'labelright': False, 'labeltop': False, 'labelbottom': False}



Далее, мы можем использовать контекстный менеджер для отключения таблицы и вызвать matshow() в каждом объекте Axes. Наконец, нам нужно добавить цветную панель, в том, что технически является новым объектом Axes в fig. Для этого мы можем использовать одну специфическую функцию из глубин matplotlib:

Python




1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



19

20

21



22

23

24



25

26

27



28

29


import numpy as np

import matplotlib.pyplot as plt

 

from mpl_toolkits.axes_grid1.axes_divider import make_axes_locatable



 

x = np.diag(np.arange(2, 12))[::-1]

x[np.diag_indices_from(x[::-1])] = np.arange(2, 12)

x2 = np.arange(x.size).reshape(x.shape)

 

sides = ('left', 'right', 'top', 'bottom')



nolabels = {s: False for s in sides}

nolabels.update({'label%s' % s: False for s in sides})

 

with plt.rc_context(rc={'axes.grid': False}):



    fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4))

    ax1.matshow(x)

    img2 = ax2.matshow(x2, cmap='RdYlGn_r')

    for ax in (ax1, ax2):

        ax.tick_params(axis='both', which='both', **nolabels)

 

    for i, j in zip(*x.nonzero()):



        ax1.text(j, i, x[i, j], color='white', ha='center', va='center')

 

    divider = make_axes_locatable(ax2)



    cax = divider.append_axes("right", size='5%', pad=0)

    plt.colorbar(img2, cax=cax, ax=[ax1, ax2])

    fig.suptitle('Heatmaps with `Axes.matshow`', fontsize=16)

 

plt.show()



Лекция №15. Математические библиотеки, работа с HTML/XML



Достарыңызбен бөлісу:
1   ...   27   28   29   30   31   32   33   34   ...   37




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет