この記事では主に、Linux システムでの pythonmatplotlib 描画の中国語表示の問題を解決する方法を紹介します。必要な友人はそれを参照してください
最近、Python データ分析コンテンツを学びたかったので、クロールするクローラーを作成しました。そして、Anaconda のツール セット (pandas、numpy、scipy、matplotlib、jupyter) を使用して、予備的なデータ マイニングと分析を行う予定です。
matplotlibを使って描画すると横軸が中国語になってしまうのですが、描画された棒グラフの横軸が常に「枠」と表示されてしまうので、解決するために情報を確認しに行きました。これは比較的一般的な問題だと思います。確かにインターネット上には中国語の資料がたくさんありますが、どれも私が遭遇した問題を完全に解決するものではありませんでした。最終的に完成するまでに、ほぼ 3 時間の断片的な作業がかかりました。同じ問題を抱えている他の子供たちの助けになればと思い、このことを共有したいと思います。
実行環境:
python2.7
Linux Centos7
condaを使用してmatplotlibとpandas
質問:
matplotlib描画中、中国語を表示できません
問題の原因:
Linuxオペレーティングシステムとmatplotlibのフォントライブラリに利用可能な中国語フォントがありません
matplotlibパッケージはASCIIコードのみをサポートしていますデフォルトであり、Unicode コードをサポートしていません
オンライン情報の概要:
「Simhei」フォントの追加など、matplotlib リソース設定ファイルを変更します (このフォントはすべての Linux システムで使用できるわけではありません。変更は効果がありません)
Linux 用の中国語フォントをインストールし、matplotlib のリソース構成ファイルを変更します。 (笑、うまくいきませんでした)
解決策:
実際、これはインターネット上のさまざまな解決策の組み合わせでもあります。一般に、次の手順があります:
1. matplotlibrc ファイルへのパスを取得します。 jupyter ノートブックにアクセスします:
import matplotlib matplotlib.matplotlib_fname()
たとえば、私のファイルは次の場所にあります:
u'~/miniconda2/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc'
以降の手順では、このファイルのフォント パラメーターを変更します。
2. システム内のすべてのフォントと利用可能な中国語フォントを確認します。また、jupyter nb:
from matplotlib.font_manager import FontManager import subprocess fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) print mat_fonts output = subprocess.check_output( 'fc-list :lang=zh -f "%{family}\n"', shell=True) print '*' * 10, '系统可用的中文字体', '*' * 10 print output zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = mat_fonts & zh_fonts print '*' * 10, '可用的字体', '*' * 10 for f in available: print f
上記の操作を完了すると、「利用可能なフォント」が空であることがわかります。 matplotlib には中国語フォントがないため (そのため、中国語の文字は「ボックス」として表示されます)
3. オペレーティング システムには中国語フォントがないと仮定します。この時点で、ttf 中国語フォントをダウンロードして cenos にインストールします。 font-familyを検出できるシステムをインストールする必要があります。そうでない場合、無効になります。この Web サイトからダウンロードしました: http://font.chinaz.com/130130474870.htm
rar ファイルを解凍します。このフォントをパス /usr/share/fonts に保存するフォルダー yourfontdir を作成し、ダウンロードした ttf ファイルを yourfontdir にコピーします (操作しやすいようにファイルを英語名に変更できます)
4. このフォントを cenos にインストールします。
cd /usr/share/fonts/yourfontsdir #生成字体索引信息. 会显示字体的font-family sudo mkfontscale sudo mkfontdir #更新字体缓存: fc-cache
5. matplotlibrc ファイルを変更します
手順 1 で取得した matplotlibrc ファイルの構成を変更します。
font.family 部分のコメントを削除し、font.serif サポート フォントに中国語フォントを追加します。ここで、ダウンロードした中国語フォントのフォントファミリーを追加します。fc-list コマンドで検索できます (事前に書き留めておくことをお勧めします)。ここで追加したのは「WenQuanYi Zen Hei Mono」フォントです。
次のコメントを削除する必要があります。削除しないと、中国語のマイナス記号も四角形で表示されます:
axes.unicode_minus : False
6 このステップが最も重要です。 matplotlib に中国語フォントを追加します
ステップ 5 を完了してからステップ 2 に進むと、「利用可能な中国語フォント」にインストールしたばかりのフォントがすでに含まれていることがわかりますが、図面ではまだ中国語を表示できません。これは、フォントを centos にインストールし、このフォントを使用するように matplotlib に指示しましたが、matplotlib がこのフォントの ttf ファイルを見つけることができないためです。 。 。 。だから私はそれのために1つを取得する必要があります。
ダウンロードした ttf フォントを次のパスにコピーします:
~/miniconda2/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf
および関連するキャッシュを削除します。次のパスで:
~/.cache/matplotlib
フォント関連のキャッシュを削除します
7. もう一度絵を描いてみます。終わり。
以上がLinuxシステムでのPython matplotlib描画の中国語表示問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。