Python matplotlib savefig: изменить размер шрифта

У меня есть некоторые цифры, которые я построил с помощью matplotlib, однако размер шрифта слишком мал, когда я использую его в латексном документе. Я попытался изменить размер шрифта, используя следующий код:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.transforms
from matplotlib.colors import LogNorm

plt.rcParams['figure.figsize'] = (10.0, 7.0) # set default size of plots
font = {'family' : 'sans',
        'weight' : 'normal',
        'size'   : 40}
matplotlib.rc('font', **font)

#================= Draw histogram =====================
fig, ax = plt.subplots()
ax.hist2d(flow[:, 0], flow[:, 1], bins=400, norm = LogNorm(), cmap='viridis')
for xc in gt_points[:, 0]:
    ax.axvline(x=xc, linestyle=':', c='r')
    print(xc)
ax.axhline(0, linestyle=':', c='r')
ax.set_xlabel('vx [pixels per second]')
ax.set_ylabel('vy [pixels per second]')
ax.set_xlim([k_means_x_min, k_means_x_max])
ax.set_ylim([k_means_y_min, k_means_y_max])
fig.tight_layout()
plt.show()
fig.savefig('histogram.pdf', bbox_inches='tight', transparent=True)

За исключением того, что изменение параметра 'size' : 40 ничего не меняет, а полученный PDF-файл содержит множество пробелов вокруг него и совсем не «плотный» (см. Изображение). Кто-нибудь может сказать мне, что я делаю не так?

Большое спасибо!

The resulting pdf

Обновлено: добавление строк matplotlib.rc ('xtick', labelize = 20) matplotlib.rc ('ytick', labelize = 20) работает, по крайней мере, для увеличения чисел по осям x и y. Однако, как уже упоминалось, matplotlib.rc('font', **font) ничего не делает ...

Вы можете попробовать изменить размер figsize. Чем меньше размер fig, тем больше будет увеличиваться размер шрифта.

ANISH TIWARI 31.10.2018 14:20

Я не могу воспроизвести с помощью matplotlib 3.0.0

DavidG 31.10.2018 14:27

Это очень странно. Код (за исключением частей, которые нельзя запустить из-за отсутствия данных) должен работать нормально. По крайней мере, для меня, вот скриншот pdf я получаю.

ImportanceOfBeingErnest 31.10.2018 14:28
2
3
4 855
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете изменить метки осей напрямую, используя это:

ax.set_ylabel('vx [pixels per second]', fontsize=40)

Ответ принят как подходящий

Согласно документации, это работает:

font = {'family' : 'normal',
        'weight' : 'normal',
        'size'   : 22}
matplotlib.rc('font', **font)

Я предполагаю, что проблема заключалась в том, что 'family' : 'sans' не распознается моим питоном.

Другие вопросы по теме