2017-08-15 48 views
0

這只是一個小問題,一直在困擾我一段時間。刪除Jupyter筆記本中涉及交互式小部件的同一單元格中的過去Matplotlib圖

我有一個由所有連續變量組成的熊貓數據框。我想爲任何選擇的變量對繪製一個散點圖(使用matplotlib),並使用Jupyter中的交互式小部件。假設數據有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異常代碼:無法將字符串轉換爲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內聯),僅此而已。 –

相關問題