2017-08-15 8 views
0

これはしばらくの間私を悩ませている小さな問題です。インタラクティブウィジェットを含むJupyter Notebookの同じセルで過去のMatplotlibプロットを削除します

私はすべての連続変数からなるパンダのデータフレームを持っています。私はJupyterのインタラクティブウィジェットを利用して、選択した変数のペアに対して散布図(matplotlibを使って)を描きたい。

データに3つの数値列 'a'、 'b'、 'c'があるとします。

これまでのところ、私はコードのこれらの行があります。

def g(x,y): 
    plt.scatter(x, y) 
interactive_plot = interactive(g, x=['a','b','c'], y=['a','b','c']) 
interactive_plot 

をそして、彼らは私がxとyのためのドロップダウンボックスで切り替えるたび散布図を解約し、選択しないのように、彼らは、正常に動作利用可能な3つの変数からの変数のペア。しかし、ここで問題となるのは、新しいプロットが表示される前に、以前に書き出されたプロットが消去されないということです。言い換えれば、matplotlibは既存の図のプロットを更新するのではなく、単純にプロット/図を重ねて表示します。だから私が変数のペアの選択を10回変更すると、10個の散布図が得られますが、これは私が望むものではありません。

誰でも私にこれを手伝ってもらえますか?

ありがとうございます。

+0

あなたはとValueError 'のようなものにつながる示しコード:A'を:float型に文字列を変換できませんでした。下の答えから、[mcve]がどのように見えるかが分かります。質問するときはいつもそのような[mcve]を使用してください。 – ImportanceOfBeingErnest

答えて

0

機能の最後にplt.show()を追加することができます。これは、新しいセルを追加するのではなく、同じセルにグラフを再移植します。

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
from ipywidgets import interactive 
%matplotlib inline 

columns=['a','b','c'] 
data = np.cumsum(np.random.rand(10,3),axis=1) 
df = pd.DataFrame(data,columns=columns) 

def g(x,y): 
    plt.scatter(df[x], df[y]) 
    plt.show() 

interactive_plot = interactive(g, x=columns, y=columns) 
interactive_plot 

enter image description here

+0

ありがとうございます。これは私の問題を解決しました。私はいつもplt.show()はノートブック(%matplotlib inlineと同等)にプロットを表示するだけだと思っていました。 –

関連する問題