Шрифт для графиков python

Изменение размера шрифта в графиках matplotlib

В библиотеке matplotlib для Python есть возможность создания графиков с высоким уровнем детализации. Одной из настроек, которую часто хотят изменить, является размер шрифта различных элементов графика, таких как метки осей, заголовки и т.д.

В качестве примера возьмем простой график, созданный с помощью matplotlib:

import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('Простой график') plt.show()

Здесь используются стандартные значения matplotlib для размеров шрифта. Однако, если необходимо изменить размер шрифта, можно использовать различные подходы.

Изменение размера шрифта меток на осях

Для изменения размера шрифта меток на осях используется метод rc из модуля matplotlib . Этот метод позволяет управлять глобальными параметрами matplotlib, включая размер шрифта меток на осях. Вот как это выглядит:

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

Эти две строки изменят размер шрифта меток на оси X и оси Y соответственно.

Изменение размера шрифта заголовков и меток осей

Для изменения размера шрифта заголовков и меток осей можно использовать аргумент fontsize в соответствующих функциях:

plt.xlabel('x', fontsize=14) plt.ylabel('y', fontsize=14) plt.title('Простой график', fontsize=20)

Здесь размер шрифта меток осей изменен на 14, а размер шрифта заголовка — на 20.

Читайте также:  Запустить idle python через командную строку

Изменение размера шрифта всех элементов графика

Если хочется установить один и тот же размер шрифта для всех элементов графика, то можно использовать метод rc для изменения параметра font.size :

Эта строка изменит размер шрифта всех элементов графика (меток осей, заголовка и т.д.) на 14.

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

Источник

Изменить размер шрифта в Matplotlib

Matplotlib — одна из наиболее широко используемых библиотек визуализации данных в Python. Большая часть популярности Matplotlib связана с его параметрами настройки — вы можете настроить практически любой элемент из его иерархии объектов.

В этом уроке мы рассмотрим, как изменить размер шрифта в Matplotlib.

Изменить размер шрифта в Matplotlib

Есть несколько способов изменить размер шрифтов в Matplotlib. Вы можете установить аргумент fontsize , изменить способ обработки шрифтов в Matplotlib в целом или даже изменить размер рисунка.

Давайте сначала создадим простой сюжет, на котором мы захотим изменить размер шрифтов:

import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(figsize=(12, 6)) x = np.arange(0, 10, 0.1) y = np.sin(x) z = np.cos(x) ax.plot(y, color='blue', label='Sine wave') ax.plot(z, color='black', label='Cosine wave') fig.suptitle('Sine and cosine waves') plt.xlabel('Time') plt.ylabel('Intensity') leg = ax.legend() plt.show() 

Изменить размер шрифта с помощью fontsize

Попробуем самый простой вариант. Каждая функция, которая имеет дело с текстом, например suptitle() , xlabel() и все другие текстовые функции, принимают аргумент — fontsize .

Вернемся к предыдущему коду и укажем fontsize для этих элементов:

import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(figsize=(12, 6)) x = np.arange(0, 10, 0.1) y = np.sin(x) z = np.cos(x) ax.plot(y, color='blue', label='Sine wave') ax.plot(z, color='black', label='Cosine wave') fig.suptitle('Sine and cosine waves', fontsize=20) plt.xlabel('Time', fontsize=16) plt.ylabel('Intensity', fontsize=16) leg = ax.legend() plt.show() 

Здесь мы установили fontsize для suptitle , а также меток времени и интенсивности. Запуск этого кода дает:

Мы также можем изменить размер шрифта в легенде, добавив аргумент prop и установив там размер шрифта:

Это изменит размер шрифта, который в этом случае также сдвинет легенду в нижний левый угол, чтобы она не перекрывалась с элементами в верхнем правом углу:

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

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

Изменить размер шрифта глобально

Есть два способа установить глобальный размер шрифта. Мы хотим установить для параметра font_size новый размер. Мы можем перейти к этому параметру через rcParams[‘font.size’] .

Один из способов — изменить их напрямую:

import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(figsize=(12, 6)) x = np.arange(0, 10, 0.1) y = np.sin(x) z = np.cos(x) plt.rcParams['font.size'] = '16' ax.plot(y, color='blue', label='Sine wave') ax.plot(z, color='black', label='Cosine wave') plt.xlabel('Time') plt.ylabel('Intensity') fig.suptitle('Sine and cosine waves') leg = ax.legend() plt.show() 

Вы должны установить их перед вызовом функции plot() , так как если вы пытаетесь применить их в дальнейшем, никаких изменений не будет. Этот подход изменит все, что указано в качестве шрифта объектом kwargs font .

Однако, когда мы запускаем этот код, становится очевидным, что метки x и y, не изменились в размере:

В зависимости от версии Matplotlib, которую вы используете, вы не сможете изменить их с помощью параметров rc. Вы бы использовали axes.labelsize и xtick.labelsize / ytick.labelsize для них соответственно.

Если их установка не меняет размер меток, вы можете использовать функцию set() , передаваемую через fontsize , или использовать функцию set_fontsize() :

import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(figsize=(12, 6)) x = np.arange(0, 10, 0.1) y = np.sin(x) z = np.cos(x) # Set general font size plt.rcParams['font.size'] = '16' # Set tick font size for label in (ax.get_xticklabels() + ax.get_yticklabels()): label.set_fontsize(16) ax.plot(y, color='blue', label='Sine wave') ax.plot(z, color='black', label='Cosine wave') plt.xlabel('Time', fontsize=16) plt.ylabel('Intensity', fontsize=16) fig.suptitle('Sine and cosine waves') leg = ax.legend() plt.show() 

Источник

Text properties and layout#

Controlling properties of text and its layout with Matplotlib.

matplotlib.text.Text instances have a variety of properties which can be configured via keyword arguments to set_title , set_xlabel , text , etc.

Rectangle prop dict plus key ‘pad’ which is a pad in points

a matplotlib.transform.Bbox instance

a Path instance and a Transform instance, a Patch

[ ‘serif’ | ‘sans-serif’ | ‘cursive’ | ‘fantasy’ | ‘monospace’ ]

horizontalalignment or ha

string e.g., [ ‘Sans’ | ‘Courier’ | ‘Helvetica’ . ] [ angle in degrees | ‘vertical’ | ‘horizontal’ ] [ size in points | relative size, e.g., ‘smaller’ , ‘x-large’ ]

string or anything printable with ‘%s’ conversion

[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ] [ ‘normal’ | ‘bold’ | ‘heavy’ | ‘light’ | ‘ultrabold’ | ‘ultralight’ ]

You can lay out text with the alignment arguments horizontalalignment , verticalalignment , and multialignment . horizontalalignment controls whether the x positional argument for the text indicates the left, center or right side of the text bounding box. verticalalignment controls whether the y positional argument for the text indicates the bottom, center or top side of the text bounding box. multialignment , for newline separated strings only, controls whether the different lines are left, center or right justified. Here is an example which uses the text() command to show the various alignment possibilities. The use of transform=ax.transAxes throughout the code indicates that the coordinates are given relative to the axes bounding box, with (0, 0) being the lower left of the axes and (1, 1) the upper right.

import matplotlib.pyplot as plt import matplotlib.patches as patches # build a rectangle in axes coords left, width = .25, .5 bottom, height = .25, .5 right = left + width top = bottom + height fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # axes coordinates: (0, 0) is bottom left and (1, 1) is upper right p = patches.Rectangle( (left, bottom), width, height, fill=False, transform=ax.transAxes, clip_on=False ) ax.add_patch(p) ax.text(left, bottom, 'left top', horizontalalignment='left', verticalalignment='top', transform=ax.transAxes) ax.text(left, bottom, 'left bottom', horizontalalignment='left', verticalalignment='bottom', transform=ax.transAxes) ax.text(right, top, 'right bottom', horizontalalignment='right', verticalalignment='bottom', transform=ax.transAxes) ax.text(right, top, 'right top', horizontalalignment='right', verticalalignment='top', transform=ax.transAxes) ax.text(right, bottom, 'center top', horizontalalignment='center', verticalalignment='top', transform=ax.transAxes) ax.text(left, 0.5*(bottom+top), 'right center', horizontalalignment='right', verticalalignment='center', rotation='vertical', transform=ax.transAxes) ax.text(left, 0.5*(bottom+top), 'left center', horizontalalignment='left', verticalalignment='center', rotation='vertical', transform=ax.transAxes) ax.text(0.5*(left+right), 0.5*(bottom+top), 'middle', horizontalalignment='center', verticalalignment='center', fontsize=20, color='red', transform=ax.transAxes) ax.text(right, 0.5*(bottom+top), 'centered', horizontalalignment='center', verticalalignment='center', rotation='vertical', transform=ax.transAxes) ax.text(left, top, 'rotated\nwith newlines', horizontalalignment='center', verticalalignment='center', rotation=45, transform=ax.transAxes) ax.set_axis_off() plt.show() 

text props

Default Font#

The base default font is controlled by a set of rcParams. To set the font for mathematical expressions, use the rcParams beginning with mathtext (see mathtext ).

Источник

Как изменить шрифты в Matplotlib (с примерами)

Как изменить шрифты в Matplotlib (с примерами)

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

Способ 1: изменить шрифт для всего текста

import matplotlib matplotlib.rcParams['font.family'] = 'monospace ' 

Способ 2: изменить шрифт для меток заголовков и осей

import matplotlib.pyplot as plt mono_font = serif_font = plt.title('Title of Plot', \*\* mono_font) plt.xlabel('X Label', \*\* serif_font) 

В следующих примерах показано, как использовать каждый метод на практике.

Способ 1: изменить шрифт для всего текста

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

import matplotlib import matplotlib.pyplot as plt #define font family to use for all text matplotlib.rcParams['font.family'] = 'monospace ' #define x and y x = [1, 4, 10] y = [5, 9, 27] #create line plot plt.plot (x, y) #add title and axis labels plt.title('Title of Plot') plt.xlabel('X Label') plt.ylabel('Y Label') #display plot plt.show() 

Обратите внимание, что заголовок и метки обеих осей имеют «моноширинный» шрифт, поскольку это семейство шрифтов, которое мы указали в аргументе rcParams .

Способ 2: изменить шрифт для меток заголовков и осей

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

import matplotlib.pyplot as plt #define font families to use mono_font = serif_font = #define x and y x = [1, 4, 10] y = [5, 9, 27] #create plot of x and y plt.plot (x, y) #specify title and axis labels with custom font families plt.title('Title of Plot', \*\* mono_font) plt.xlabel('X Label', \*\* serif_font) plt.ylabel('Y Label', \*\* serif_font) #display plot plt.show() 

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

Примечание.Полный список доступных семейств шрифтов, которые можно использовать в Matplotlib, можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в Matplotlib:

Источник

Оцените статью