48

MatplotlibでASCII以外の文字を表示するのに問題があります。これらの文字は、適切なフォントではなく小さなボックスとしてレンダリングされます。次のようになります(これらのボックスを強調表示するために赤いペンキで塗りつぶしました)。

これが問題を示す画像です

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

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

4

1 に答える 1

80

この問題には、実際にはいくつかの異なる原因が考えられます。

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

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

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に渡しました

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

もう1つの原因は、ファイルの先頭にUTF-8マジックコメントを付けるのを忘れたことです(これが問題の原因である可能性があることを読みました)。

# -*- coding: utf-8 -*-
于 2012-06-09T11:07:25.560 に答える