Подтвердить что ты не робот

Не-ASCII-символы в Matplotlib

У меня есть проблема с отображением символов ASCII в Matplotlib, эти символы отображаются как маленькие прямоугольники вместо правильного шрифта, это выглядит (я заполнил эти коробки красной краской, чтобы освежить их):

Here is the image showing the problem

Как это исправить?

Связанный с этим вопрос Акцентированные символы в Matplotlib.

4b9b3361

Ответ 1

У этой проблемы может быть несколько причин:

Шрифт по умолчанию не включает эти глифы

Вы можете изменить шрифт по умолчанию, используя следующее (перед выполнением любого построения)!

  matplotlib.rc('font', family='Arial')

В некоторых версиях matplotlib у вас будет следующее семейство:

  matplotlib.rc('font', **{'sans-serif' : 'Arial',
                           'family' : 'sans-serif'})

(Обратите внимание, что поскольку sans-serif содержит дефис внутри синтаксиса **{}, это действительно необходимо.)

Первая команда изменяет семейство шрифтов sans-serif, чтобы содержать только один шрифт (в моем случае это был Arial), второй устанавливает семейство шрифтов по умолчанию на sans-serif.

Другие опции включены в документации.

Вы неправильно создали/передали строковые объекты в Matplotlib

Даже если шрифт содержит правильные глифы, если вы забыли использовать u для создания констант Unicode, Matplotlib будет иметь такое поведение

  plt.xlabel("Średnia odległość między stacjami wsparcia a modelowaną [km]")

Итак, вам нужно добавить u:

  plt.xlabel(u"Średnia odległość między stacjami wsparcia a modelowaną [km]")

Другая причина заключается в том, что вы забыли поставить UTF-8 магический комментарий поверх файла (я читал, что это может быть источником проблемы):

 # -*- coding: utf-8 -*-