установить кириллические шрифты в matplotlib

avatar
ambrish dhaka
8 апреля 2018 в 02:56
66
1
0

Я не могу отображать кириллические или арабские символы в цифрах библиотеки matplot.

Как вы можете видеть, квадратные блоки появляются под осью x. Я работаю над ноутбуком ipython3.

Источник
jdhao
8 апреля 2018 в 07:06
0

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

Ответы (1)

avatar
jdhao
8 апреля 2018 в 03:31
0

Вы должны указать Matplotlib, чтобы использовать шрифт, который поддерживает выбранный вами язык. Но вы должны убедиться, что ваша система содержит шрифт, который может отображать предполагаемый язык. Сначала вам нужно найти код языка, который вы хотите использовать, найдите его здесь. Затем, если вы работаете в системе Linux, вы можете использовать следующую команду, чтобы найти шрифт, который поддерживает ваш язык:

fc-list :lang=<LANGUAGE_CODE>

Возьмем, к примеру, китайский язык с кодом zh, поэтому, чтобы найти язык, поддерживающий китайский, вы можете использовать

fc-list :lang=zh

enter image description here

Возможно, есть несколько шрифтов, которые поддерживают ваш язык. Имя шрифта указано после каталога шрифта. Просто выберите один.

После того, как вы подобрали шрифт. Добавьте следующий код в начало исходного кода:

.
import matplotlib as mpl
# <FONT_NAME> is the font picked by you, don't forget to 
# enclose it with quotation marks
mpl.rcParams['font.family']='<FONT_NAME>'

Тогда вы должны увидеть появление символов.

ambrish dhaka
8 апреля 2018 в 06:38
0

Я попытался поставить это как mpl.rcParams['font.family']=FreeSerif. Но ошибка, которую я получаю, такова: NameError: name 'FreeSerif' is not defined Я уверен, в чем проблема.

jdhao
8 апреля 2018 в 06:39
0

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

jdhao
8 апреля 2018 в 06:44
0

Просто используйте mpl.rcParams['font.family']='FreeSerif'.