LinuxシステムでのPython matplotlib描画の中国語表示の問題を解決する

巴扎黑
リリース: 2017-06-23 16:25:15
オリジナル
1852 人が閲覧しました

最近、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'
ログイン後にコピー

以降の手順では、このファイルのフォント パラメーターを変更します。

2. システム内のすべてのフォントと利用可能な中国語フォントを確認します。また、jupyter nb:

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 には中国語フォントがないため (そのため、中国語の文字は「ボックス」として表示されます)

3. オペレーティング システムには中国語フォントがないと仮定します。この時点で、ttf 中国語フォントをダウンロードして cenos にインストールします。 font-family を検出できるシステムをインストールする必要があります。そうでないと無効になります。このウェブサイトからダウンロードしました:

rar ファイルを解凍します。このフォントを保存するフォルダー yourfontdir をパス

/usr/share/fonts

に作成し、ダウンロードした ttf ファイルを yourfontdir にコピーします (操作しやすいようにファイルを英語名に変更できます)

4. このフォントをインストールします。セノス 。

cd /usr/share/fonts/yourfontsdir#生成字体索引信息. 会显示字体的font-familysudo 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!