11

matplotlibを使用していくつかの特別なグラフをプロットするPythonモジュールを変更しています。

現在、このモジュールはすべての図をファイルとして保存するだけです。

ipythonノートブックで作業しているときにモジュールをインポートして結果を「インライン」で表示できるようにしたいのですが、モジュールが他のすべてにインポートされたときに図をファイルとして保存するデフォルトの機能を維持したいと思いますケース。

そのため、モジュールがipythonノートブックにインポートされ、pylabがインラインで動作しているかどうかを確認する必要があります。

どうすればこれを確認できますか?

4

3 に答える 3

18

matplotlibバックエンドは次の方法で確認できます。

import matplotlib
matplotlib.get_backend()

特にインラインmatplotlibをチェックするには:

mpl_is_inline = 'inline' in matplotlib.get_backend()

IPythonノートブックでは、アクティブなmatplotlibバックエンドに関係なく、次の方法で常にインライン図を表示できることに注意してください。

display(fig)
于 2013-03-11T19:17:37.570 に答える
11

試してみてはどうですか:

try:
    cfg = get_ipython().config
    print('Called by IPython.')

    # Caution: cfg is an IPython.config.loader.Config
    if cfg['IPKernelApp']:
        print('Within IPython QtConsole.')

        try:
            if cfg['IPKernelApp']['pylab'] == 'inline':
                print('inline pylab loaded.')
            else:
                print('pylab loaded, but not in inline mode.')
        except:
            print('pylab not loaded.')
    elif cfg['TerminalIPythonApp']:
        try:
            if cfg['TerminalIPythonApp']['pylab'] == 'inline':
                print('inline pylab loaded.')
            else:
                print('pylab loaded, but not in inline mode.')
        except:
            print('pylab not loaded.')
except:
    print('Not called by IPython.')
于 2013-07-24T06:13:03.383 に答える
2

これで検索できました。解決策を見つけたと思います。これが実際に文書化されているのか、意図されているのかはわかりませんが、うまくいく可能性があります。

get_ipython().config['IPKernelApp']['pylab'] == 'inline'

get_ipython()IPythonの実行時にのみ定義されるメソッドのようです。現在のIPythonセッションであると私が想定しているものを返します。config次に、 「IPKernelApp」要素を含む辞書である属性にアクセスできます。後者はそれ自体が辞書であり、キーを含めることができます。キーpylabは文字列にすることができます'inline'

あまり試したことはありませんが、pylabをインラインで実行していない場合、上記のコード行はFalseと評価されると思います。

さらに重要なことに、ノートブックまたはpylabオプションを実行していない場合は、KeyErrorが発生するため、これをキャッチして、pylabインラインでノートブックを実行する場合は発生した例外を「no」と見なす必要があります。

最後に、get_ipython()をスローする可能性がありNameErrorます。上記と同様に、もちろん、IPythonを実行していないことも意味します。

私はこれを最小限にテストしただけですが、これをIPythonノートブックにインポートすると、デフォルトのPythonコマンドラインで動作することが示されます。

これがあなたのために働くかどうか私たちに知らせてください。

于 2013-03-11T17:49:01.727 に答える