FONT的に日本語って色々不便よね
chatGPTのCodeInterpreterで基本的な探索的データ分析(EDA: Exploratory Data Analysis)をお願いするとぽんぽんとグラフ化して表示してくれますね?
しかしそのグラフをよーくみるとこんな風になってませんか??
もはや何のグラフなのかさっぱりわかりませんね笑
グラフで文字が表示されない原因。
これではデーター解析に全く使えませんね。
理由は実は簡単なのです。chatGPT側に日本語FONTが用意されていないので
日本語FONT部分が全部表示ができなくて四角になってしまうわけですね。
この対処方法をchatGPTに聞いてみた
先ほど棒グラフを表示していただいた時に気になったのですが 文字の一部がFONTが読めていないような四角の枠線になってます。 これはもしかしたら日本語FONTがなくて表示できていないといことですか?
はい、その通りです。その四角の枠線は、日本語のフォントが利用できない場合に表示されるプレースホルダです。一部の環境では、日本語のフォントがデフォルトでインストールされていないため、このような問題が発生することがあります。
この問題を解決するには、matplotlib の設定を変更して、日本語をサポートするフォントを使用するようにする必要があります。しかし、現在の環境ではインターネットに接続していないため、新しいフォントをダウンロードすることはできません。
代替の解決策として、日本語の文字列を表示する代わりに、対応する英語の文字列を表示することができます。具体的には、データフレームの列名や値を英語に翻訳することができます。ただし、これは手動で行う必要があり、すべての日本語の文字列を完全にカバーすることはできません。
この問題に対する最善の解決策は、日本語をサポートするフォントを含む環境で作業を行うことです。
FONTをアップロードすれば一時的に対処できると理解しましたがあってますか?
はい、その通りです。日本語をサポートするフォント(.ttf ファイルなど)をアップロードして、それを matplotlib で使用することで、日本語のテキストを正しく表示することができます。
具体的な手順は以下の通りです:
- 日本語をサポートするフォントファイル(.ttf など)をアップロードします。
- matplotlib のフォント設定を更新して、アップロードしたフォントファイルを使用するようにします。
- matplotlib のキャッシュをクリアします。
- 再度グラフを描画します。
ただし、この手順はセッションごとに適用され、セッションが終了すると設定はリセットされます。また、アップロードしたフォントファイルは、プライバシーとセキュリティの観点から、セッション終了時に削除されます。
それでは、日本語をサポートするフォントファイルをアップロードしてください。
では手持ちの NotoSans_regular.otfを使ってみる
Matplotlibにフォント設定をしてやるために・・・
アップロードしてみた図
あれ?まだダメやん。このFONTブログ用にサブセット化した奴だからダメなのかも。
さらにchatGPTに聞いてみる
この足りない部分に適切なFONTは何でしょうか まだほとんど表示されていませんね
日本語を完全にカバーするためには、一般的には “Noto Sans CJK JP” や “Takao” などのフォントが推奨されます。これらのフォントは、ひらがな、カタカナ、漢字(JIS第1水準、第2水準、追加漢字など)を網羅しています。
ただし、これらのフォントも全ての文字をカバーしているわけではなく、一部の非常にまれな文字や新しく追加された文字はカバーされていない場合があります。
もし特定の文字が正しく表示されない場合は、その文字が含まれているフォントを探す必要があります。具体的な文字が分かる場合は、その文字がサポートされているフォントを探すことができます。
また、フォントの選択は一部の問題を解決するかもしれませんが、それ以外の問題(例えば、文字化けや文字の欠落)がある場合は、それらはデータの問題やエンコーディングの問題である可能性があります。それらの問題を解決するには、データを作成または取得したソースに問い合わせるか、データの前処理を行うことが必要です。
なるほど Noto Sans CJK JPか。
Noto Sans CJK JPを探す旅に出る。
Google FONTには置いてなかった笑
仕方ないのでググりながら徘徊すると Githubに置いてあるらしい!
https://github.com/notofonts/noto-cjk/tree/main/Sans/OTF/Japanese
ここから適当な奴選んでダウンロードしましょう。
私は NotoSansCJKjp-Regular.otf こいつにしました。
画面の下部にある view raw をクリックすればローカルにダウンロードできます。
FONTを NotoSansCJKjp-Regular.otf にして再度挑戦!
さぁどうかな?
おー 無事に表示されたぞ よかったよかったw
新たにアップロードされた”NotoSansCJKjp-Regular.otf”フォントを使用してグラフを再描画しました。今回は日本語のテキストが正しく表示されています。
ただし、ご理解の通り、これは一時的な解決策であり、セッションが終了すると設定はリセットされます。この設定を永続的に適用するには、使用している環境に日本語フォントをインストールするか、matplotlibのデフォルト設定を変更する必要があります。
まぁあちらの環境に日本語FONTはこちらからはインスコできないのでこちらから一時的にFONTを渡すしかないんだけどね笑
あとがき
この日本語FONTはあくまで一時的な物としての扱いになります。
そのセッションの中だけ有効なので new chat で新しいセッションを開始すると
もうアップロードしたFONTは関係ないので新しいセッションでは使えません。
でも出力されたグラフを真面目に解析するなら項目名が読めないのは致命的ですので
英語モードでサチコを操るネィティブさん以外は毎回FONTをアップロードしてから
グラフ化を実行すると幸せになれますねw