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