Matplotlib: Использование GridSpec

Matplotlib: Использование GridSpec


import numpy as np

import matplotlib.pyplot as plt

import matplotlib.gridspec as gridspec


np.random.seed(0)

x = np.linspace(0, 10, 500)


fig = plt.figure(constrained_layout=True, figsize=(10, 6))

gs = fig.add_gridspec(nrows=3, ncols=3)


ax_main = fig.add_subplot(gs[:, :2]) # занимает все строки и первые 2 столбца

ax_r1 = fig.add_subplot(gs[0, 2]) # правый верхний

ax_r2 = fig.add_subplot(gs[1, 2]) # правый средний

ax_r3 = fig.add_subplot(gs[2, 2]) # правый нижний


# основной график

ax_main.plot(x, np.sin(x), label='sin')

ax_main.plot(x, np.cos(x), label='cos')

ax_main.set_title('Main: sin & cos')

ax_main.legend()


# три маленьких

ax_r1.plot(x, np.abs(np.sin(x)) * 10)

ax_r1.set_title('abs(sin) x10')


ax_r2.hist(np.random.randn(200), bins=18)

ax_r2.set_title('hist')


sc = ax_r3.scatter(x[::10], np.sin(x)[::10], c=np.cos(x)[::10], cmap='viridis')

ax_r3.set_title('scatter (c == cos)')


# общий colorbar для правой колонки

fig.colorbar(sc, ax=[ax_r1, ax_r2, ax_r3], shrink=0.8)


plt.show()


Report Page