2017-05-09 105 views
1

我有以下代码。如果没有%matplotlib内联,jupyter笔记本会弹出一个额外的窗口来显示绘图并且它是交互式的(右下角在您移动鼠标时更新x和y值)。用%matplotlib inline,该图不是交互式的。Jupyter笔记本画布使用%matplotlib内联时不交互

我能做些什么来使它在笔记本内互动?

import pandas as pd 
import matplotlib 
import matplotlib.pyplot as plt 
import numpy as np 
from numpy.random import randn 
%matplotlib inline 

origins = ['China','Brazil','India','USA','Canada','UK','Germany', 
    'Iraq','Chile','Mexico'] 


df = pd.DataFrame({'height': 
np.random.rand(10),'weight':np.random.rand(10), 
       'origin':origins}) 

plt.figure() 
plt.scatter(df['height'],df['weight'],picker=5) 
plt.gca().set_ylabel('Weight') 
plt.gca().set_xlabel('Height') 

def onpick(event): 
    origin = df.iloc[event.ind[0]]['origin'] 
    plt.gca().set_title('came from {}'.format(origin)) 

plt.gcf().canvas.mpl_connect('pick_event',onpick) 
plt.show() 

回答

1

可以使用%matplotlib notebook,而不是%matplotlib inline。与%matplotlib notebook命令,允许交互式数字如果环境允许它

的matplotlib库还附带:

正如IPython tutorial on plotting解释。

(Emphasis mine)