PycharmでmatplotlibでNSInvalidArgumentExceptionの対処法

Pycharmでmatplotlibを使った時にNSInvalidArgumentExceptionが出てしまった時の対処法について書いていきます。



PycharmでmatplotlibでNSInvalidArgumentExceptionの対処法

Pycharmでmatplotlibを使った時に次のエラーメッセージが出てしまいました。
エラーが出た時のソースコードは後半でご紹介いたします。

なにやら「NSInvalidArgumentException」が原因で実行できない様子。

ネットで調べたところ、matplotlibのimportの前に次の2行を挿入すればいけるらしいです。

import matplotlib
matplotlib.use(‘TkAgg’)
の2行を追加して実行してみてください。
おそらくNSInvalidArgumentExceptionが解消されるはずです。

なぜNSInvalidArgumentExceptionが解消されるの?

私はぶっちゃけそこまで詳しくないのでネットで調べました。
ネットで調べた結論を以下にまとめます。

matplotlibを使用することで作成した図をファイルやGUIウィンドウに出力します。

matplotlibの画像描画バックエンドではデフォルトの設定ではCocoaのAPIを使ってレンダリングを行う「macosx」
です。
matplotlibのデフォルトである「macosx」以外には「GTKAgg」や「Qt4Agg」があります。

何らかの理由で(この理由が調べても分かりませんでした。私の環境だけかもしれません)Pycharm上ではCocoaのAPIを使ってレンダリングを行う「macosx」を使っての描画ができないようです。

そこで先ほどご紹介した
import matplotlib
matplotlib.use(‘TkAgg’)
の2行で明示的にデフォルトの設定を「GTKAgg」に変える必要があるようです。

メインの処理上で明示的にデフォルトの設定を変える方法だけでなく、設定ファイルを変える方法もあります。

終わりに

今回はPycharmでmatplotlibを使った時にNSInvalidArgumentExceptionが出てしまった時の対処法について書きました。

NSInvalidArgumentExceptionの他にRuntimeErrorになる場合もあるそうですね。

ちなみに私がPycharmでmatplotlibでいろいろいじくった際のソースコードはこちらにあります。
https://github.com/Chico27/Python-graph-plot

記事の一番上にご紹介したエラーメッセージは、わざとエラーメッセージを出すために「import matplotlib」と「matplotlib.use(‘TkAgg’)」の2行をコメントアウトして実行した結果です。

この記事が参考になれば幸いです。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いいたします。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






Python

Posted by ちこ