《Python项目四、与IPythonNotebook部件交互》由会员分享,可在线阅读,更多相关《Python项目四、与IPythonNotebook部件交互(5页珍藏版)》请在金锄头文库上搜索。
1、四、与 IPython Notebook部件交互简单来说,这些部件可以让你像在HT ML 表单里一样选择一些值,这包括滑块、下拉框、选择框等。正如你会读到的,这些部件非常方便将我们在第1 章中提及的天气数据可视化。操作步骤( 1)导入部分如下:1importseaborn assns2importnumpyasnp3importpandasaspd4importmatplotlib.pyplotasplt5fromIPython.html.widgetsimportinteract6fromdautilimportdata7fromdautilimportts( 2)加载数据同时请求内联图:1
2、%matplotlibinline2df=data.Weather.load()( 3)定义以下函数,这个函数会显示气泡图:1def plot_data(x=TEMP, y=RAIN, z=WIND_SPEED, f=A, size=10,cmap=Blues):2dfx=dfx.resample(f)3dfy=dfy.resample(f).mean()4dfz=dfz.resample(f).mean()56bubbles= (dfz - dfz.min()/(dfz.max() - dfz.min()7891011121314151617years=dfz.index.yearsc=pl
3、t.scatter(dfx,dfy,s=size*bubbles+9,c=years,cmap=cmap,label=data.Weather.get_header(z),alpha=0.5)plt.colorbar(sc,label=Year)freqs=A:Annual,M:Monthly,D:Dailyplt.title(freqsf+Averages)plt.xlabel(data.Weather.get_header(x)plt.ylabel(data.Weather.get_header(y)plt.legend(loc=best)( 4)通过以下代码调用我们刚刚定义的函数:1va
4、rs=df.columns.tolist()2freqs=(A,M,D)3cmaps=cmapforcmap in plt.cm.datadifnot cmap.endswith(_r)4cmaps.sort()5interact(plot_data, x=vars, y=vars, z=vars, f=freqs,size=(100,700), cmap=cmaps)( 5)本示例需要上手操作一下来理解它的工作原理,下面是一个样例气泡图:( 6)定义另一个函数(和第(2)步中的程序同名,注释掉前一个),这个函数里我们将数据按照日或月进行分组:1defplot_data(x=TEMP,y=RA
5、IN,z=WIND_SPEED,2groupby=ts.groupby_yday,3size=10,cmap=Blues):4ifgroupby =ts.groupby_yday:567891011121314151617181920212223groupby=ts.groupby_ydayelifgroupby=ts.groupby_month:groupby=ts.groupby_monthelse:raiseAssertionError(Unknowngroupby + groupby)dfx=groupby(dfx).mean()dfy=groupby(dfy).mean()dfz=g
6、roupby(dfz).mean()bubbles=(dfz-dfz.min()/(dfz.max()-dfz.min()colors=dfx.index.valuessc=plt.scatter(dfx,dfy,s=size*bubbles+9,c = colors,cmap=cmap,label=data.Weather.get_header(z), alpha=0.5)plt.colorbar(sc, label=Day of Year)by_dict = ts.groupby_yday: Day of Year, ts.groupby_month: Monthplt.title(Gro
7、upedby+by_dictgroupby)plt.xlabel(data.Weather.get_header(x)plt.ylabel(data.Weather.get_header(y)plt.legend(loc=best)( 7)用这段代码调用上述函数:1groupbys = (ts.groupby_yday, ts.groupby_month)2interact(plot_data, x=vars, y=vars, z=vars, groupby=groupbys,3size=(100,700), cmap=cmaps)请参见以下截图了解最终结果:我对这个图的第一印象是温度和风速似乎是正相关的。