web-dev-qa-db-ja.com

Matplotlibの非ASCII文字

Matplotlibにnon - [〜#〜] ascii [〜#〜] 文字を表示する際に問題があります。これらの文字は適切なフォントではなく小さなボックスとしてレンダリングされます。それらを強調するために赤いペイントで):

Here is the image showing the problem

どうすれば修正できますか?

関連する質問はMatplotlibのアクセント記号付き文字です。

47
jb.

この問題には、実際にはいくつかの異なる原因があります。

デフォルトのフォントにはこれらのグリフは含まれません

以下を使用してデフォルトのフォントを変更できます(プロットが行われる前に!)

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

Matplotlibの一部のバージョンでは、ファミリを設定する必要があります。

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

sans-serifには**{}構文内にハイフンが含まれているため、実際に必要であることに注意してください。)

最初のコマンドはsans-serifフォントファミリーを1つのフォントのみを含むように変更し(私の場合は Arial )、2番目のコマンドはデフォルトのフォントファミリーをsans-serifに設定します。

他のオプションが含まれています ドキュメント内

文字列オブジェクトをMatplotlibに不適切に作成/渡しました

フォントに適切なグリフが含まれている場合でも、uを使用して nicode 定数を作成するのを忘れた場合、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]")

別の原因は、ファイルの先頭に TF-8 マジックコメントを置くのを忘れたことです(この 問題の原因である可能性があります ):

# -*- coding: utf-8 -*-
76
jb.

jb.の答えは十分です。 uの追加を避けたい場合は、これを使用してください

from __future__ import unicode_literals
5
Ferris