9

Как изменить размер шрифта на графике matplotlib

8

Как изменить размер шрифта для всех элементов (меток, заголовка и т.д.) на графике, созданном с помощью matplotlib?

Я знаю, как изменить размер шрифта меток осей, это делается с помощью следующего кода:

import matplotlib 
matplotlib.rc('xtick', labelsize=20) 
matplotlib.rc('ytick', labelsize=20) 

Но как изменить размер шрифта для остальных элементов?

5 ответ(ов)

6

Если вы такой же контрол-фрик, как и я, вам может понадобиться явно установить все размеры шрифтов в Matplotlib. Вот пример кода, который поможет вам это сделать:

import matplotlib.pyplot as plt

SMALL_SIZE = 8
MEDIUM_SIZE = 10
BIGGER_SIZE = 12

plt.rc('font', size=SMALL_SIZE)          # управление размерами шрифта по умолчанию
plt.rc('axes', titlesize=SMALL_SIZE)     # размер шрифта заголовка осей
plt.rc('axes', labelsize=MEDIUM_SIZE)    # размер шрифта меток по оси x и y
plt.rc('xtick', labelsize=SMALL_SIZE)    # размер шрифта меток по оси x
plt.rc('ytick', labelsize=SMALL_SIZE)    # размер шрифта меток по оси y
plt.rc('legend', fontsize=SMALL_SIZE)    # размер шрифта легенды
plt.rc('figure', titlesize=BIGGER_SIZE)  # размер шрифта заголовка фигуры

Имейте в виду, что вы также можете установить размеры, вызывая метод rc у модуля matplotlib:

import matplotlib

SMALL_SIZE = 8
matplotlib.rc('font', size=SMALL_SIZE)
matplotlib.rc('axes', titlesize=SMALL_SIZE)

# и так далее ...

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

2

Если вам нужно изменить размер шрифта только для конкретного графика, который уже был создан, попробуйте следующий код:

import matplotlib.pyplot as plt

ax = plt.subplot(111, xlabel='x', ylabel='y', title='title')
for item in ([ax.title, ax.xaxis.label, ax.yaxis.label] +
             ax.get_xticklabels() + ax.get_yticklabels()):
    item.set_fontsize(20)

Этот код создает подграфик и изменяет размер шрифта для заголовка, меток осей и меток делений осей на 20 пунктов.

2

Вы можете изменить размер шрифта для всех графиков в Matplotlib с помощью следующей команды:

matplotlib.rcParams.update({'font.size': 22})

Эта строка кода обновляет параметры настройки Matplotlib, устанавливая размер шрифта на 22. Таким образом, все текстовые элементы графиков (например, заголовки, подписи осей, легенды и т.д.) будут отображаться с указанным размером шрифта. Если вам нужно применить этот параметр только к конкретному графику, вы можете использовать метод set_fontsize для отдельных текстовых элементов.

0

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

Я разработал слегка отличающийся подход, который менее загроможден по сравнению с моим первоначальным ответом ниже. Он позволяет использовать любой шрифт на вашей системе, включая .otf шрифты. Чтобы задать разные шрифты для каждого элемента, просто добавьте больше переменных font_path и font_prop.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
import matplotlib.ticker

# Обходные пути для ошибки с логарифмическими осями в Matplotlib 2.0.0
# https://github.com/matplotlib/matplotlib/issues/8017 :
# matplotlib.ticker._mathdefault = lambda x: '\\mathdefault{%s}'%x 

# Задаем свойства шрифта (можно использовать больше переменных для различных шрифтов)
font_path = 'C:\\Windows\\Fonts\\AGaramondPro-Regular.otf'
font_prop = font_manager.FontProperties(fname=font_path, size=14)

ax = plt.subplot()  # Определяет переменную ax, создавая пустой график

# Определяем данные для построения графика
x = np.linspace(0, 10)
y = x + np.random.normal(x)
plt.plot(x, y, 'b+', label='Точки данных')

for label in (ax.get_xticklabels() + ax.get_yticklabels()):
    label.set_fontproperties(font_prop)
    label.set_fontsize(13)  # Размер здесь переопределяет font_prop

plt.title("Экспоненциально затухающие колебания", fontproperties=font_prop,
          size=16, verticalalignment='bottom')  # Размер здесь переопределяет font_prop
plt.xlabel("Время", fontproperties=font_prop)
plt.ylabel("Амплитуда", fontproperties=font_prop)
plt.text(0, 0, "Разный текст", fontproperties=font_prop)

lgd = plt.legend(loc='lower right', prop=font_prop)  # Обратите внимание на другой аргумент 'prop' для легенды
lgd.set_title("Легенда", prop=font_prop)

plt.show()

Изначальный ответ

Этот ответ в основном объединяет ответ ryggyr здесь и другие ответы на SO.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager

# Задаем шрифтовые словари (для заголовка графика и осей)
title_font = {'fontname':'Arial', 'size':'16', 'color':'black', 'weight':'normal',
              'verticalalignment':'bottom'}  # Нижнее вертикальное выравнивание для большего пространства
axis_font = {'fontname':'Arial', 'size':'14'}

# Задаем свойства шрифта (для использования в легенде)   
font_path = 'C:\\Windows\\Fonts\\Arial.ttf'
font_prop = font_manager.FontProperties(fname=font_path, size=14)

ax = plt.subplot()  # Определяет переменную ax, создавая пустой график

# Задаем шрифт для меток делений
for label in (ax.get_xticklabels() + ax.get_yticklabels()):
    label.set_fontname('Arial')
    label.set_fontsize(13)

x = np.linspace(0, 10)
y = x + np.random.normal(x)  # Просто симулируем данные

plt.plot(x, y, 'b+', label='Точки данных')
plt.xlabel("Ось x", **axis_font)
plt.ylabel("Ось y", **axis_font)
plt.title("Разный график", **title_font)
plt.legend(loc='lower right', prop=font_prop, numpoints=1)
plt.text(0, 0, "Разный текст", **title_font)
plt.show()

Используя несколько шрифтовых словарей, вы можете выбрать разные шрифты/размеры/вес/цвета для различных заголовков, выбрать шрифт для меток делений и выбрать шрифт для легенды независимо.

0

Чтобы изменить размер меток на осях в графике, созданном с помощью Matplotlib, вы можете использовать метод tick_params(). Например, для установки размера меток к 14, примените следующий код:

import matplotlib.pyplot as plt

# Ваш код для создания графика

plt.tick_params(labelsize=14)  # Установка размера меток
plt.show()

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь