Znaki spoza ASCII w Matplotlib

Mam problem z wyświetlaniem nie-ASCII znaków w Matplotlib, znaki te są renderowane jako małe pudełka zamiast odpowiedniej czcionki, wygląda to tak (wypełniłem te pudełka czerwoną farbą, aby je podświetlić):

Oto obraz pokazujący problem

Jak to naprawić?

Powiązane pytanie to znaki akcentowane w Matplotlib.

Author: Community, 2012-06-09

2 answers

Ten problem może mieć kilka różnych przyczyn:

Domyślna czcionka nie zawiera tych glifów

Możesz zmienić domyślną czcionkę za pomocą następujących opcji (zanim wykreślenie zostanie wykonane!)

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

W niektórych wersjach matplotlib musisz ustawić rodzinę:

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

(zauważ, że ponieważ sans-serif zawiera myślnik wewnątrz składni **{}, jest to w rzeczywistości konieczne.)

Pierwsze polecenie zmienia rodzinę czcionek sans-serif na zawiera tylko jedną czcionkę (w moim przypadku była to Arial ), druga Ustawia domyślną rodzinę czcionek na sans-serif.

Inne opcje są zawarte w dokumentacji .

Nieprawidłowo utworzyłeś / przekazałeś obiekty string do Matplotlib

Nawet jeśli czcionka zawiera odpowiednie glify, jeśli zapomniałeś użyć u do utworzenia stałych Unicode , Matplotlib będzie miał takie zachowanie:

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

Więc musisz dodać u:

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

Inną przyczyną jest to, że zapomniałeś umieścić UTF-8 magiczny komentarz na górze pliku (czytałem, że to może być źródłem problemu):

# -*- coding: utf-8 -*-
 78
Author: jb.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-11 14:14:27

jb.'Odpowiedź jest wystarczająco dobra. Jeśli chcesz uniknąć dodawania u, Użyj tego

from __future__ import unicode_literals
 5
Author: Ferris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-15 08:26:44