Python: отображение строки текста вне диаграммы matplotlib

У меня есть матричный график, созданный библиотекой matplotlib. Размер моей матрицы равен 256×256, и у меня уже есть легенда и цветная панель с правильными тиками. Я не могу прикрепить изображение из-за того, что я был новым для stackoverflow. Во всяком случае, я использую этот код для создания сюжета:

# Plotting - Showing interpolation of randomization plt.imshow(M[-257:,-257:].T, origin='lower',interpolation='nearest',cmap='Blues', norm=mc.Normalize(vmin=0,vmax=M.max())) title_string=('fBm: Inverse FFT on Spectral Synthesis') subtitle_string=('Lattice size: 256x256 | H=0.8 | dim(f)=1.2 | Ref: Saupe, 1988 | Event: 50 mm/h, 15 min') plt.suptitle(title_string, y=0.99, fontsize=17) plt.title(subtitle_string, fontsize=9) plt.show() # Makes a custom list of tick mark intervals for color bar (assumes minimum is always zero) numberOfTicks = 5 ticksListIncrement = M.max()/(numberOfTicks) ticksList = [] for i in range((numberOfTicks+1)): ticksList.append(ticksListIncrement * i) cb=plt.colorbar(orientation='horizontal', format='%0.2f', ticks=ticksList) cb.set_label('Water depth [m]') plt.show() plt.xlim(0, 255) plt.xlabel('Easting (Cells)') plt.ylim(255, 0) plt.ylabel('Northing (Cells)') 

Теперь, будучи моим субтитрами слишком долго (3-я строка кода в выдержке, приведенной здесь), она мешает тикам оси Y, и я не хочу этого. Вместо этого часть информации, о которой сообщается в субтитрах, я хотел бы перенаправить на строку текста, которая будет помещена в нижней части изображения под меткой цвета. Как это можно сделать с помощью matplotlib?

Извините за невозможность прикрепить изображение. Благодарю.

    Как правило, вы должны использовать annotate для этого.

    Ключ состоит в том, чтобы поместить текст с координатами x в координатах осей (поэтому он выровнен с осями) и y-координатами в координатах фигур (так что это внизу рисунка), а затем добавить смещение в точках, так что а не на точной нижней части рисунка.

    В качестве полного примера (я также показываю пример использования extent kwarg с imshow всякий случай, когда вы не знали об этом):

     import numpy as np import matplotlib.pyplot as plt data = np.random.random((10, 10)) fig, ax = plt.subplots() im = ax.imshow(data, interpolation='nearest', cmap='gist_earth', aspect='auto', extent=[220, 2000, 3000, 330]) ax.invert_yaxis() ax.set(xlabel='Easting (m)', ylabel='Northing (m)', title='This is a title') fig.colorbar(im, orientation='horizontal').set_label('Water Depth (m)') # Now let's add your additional information ax.annotate('...Additional information...', xy=(0.5, 0), xytext=(0, 10), xycoords=('axes fraction', 'figure fraction'), textcoords='offset points', size=14, ha='center', va='bottom') plt.show() 

    введите описание изображения здесь

    Большинство из них воспроизводит что-то похожее на ваш пример. Ключ – annotate вызов.

    Аннотат чаще всего используется для текста в позиции ( xytext ) относительно точки ( xy ) и необязательно соединить текст и точку со стрелкой, которую мы пропустим здесь.

    Это немного сложно, поэтому давайте сломаем его:

     ax.annotate('...Additional information...', # Your string # The point that we'll place the text in relation to xy=(0.5, 0), # Interpret the x as axes coords, and the y as figure coords xycoords=('axes fraction', 'figure fraction'), # The distance from the point that the text will be at xytext=(0, 10), # Interpret `xytext` as an offset in points... textcoords='offset points', # Any other text parameters we'd like size=14, ha='center', va='bottom') 

    Надеюсь, это поможет. Руководства по аннотации ( ввод и подробное описание ) в документации весьма полезны для дальнейшего чтения.