使用matplotlib生成简单的html仪表板
matplotboard的Python项目详细描述
使用matplotlib生成html仪表板的实用程序。Matplotboard使 包装绘图功能并将绘图转储到可搜索网页或标记报告中。这是最好的 以实例演示。
importnumpyasnpimportmatplotlib.pyplotaspltimportmatplotboardasmpb@mpb.decl_figdefcool_fig():xs=np.linspace(-10,10,100)ys=xs**2plt.plot(xs,ys)if__name__=='__main__':figures={'cool_fig':cool_fig(),}mpb.render(figures)mpb.generate_report(figures,'Report')
您可以查看结果here。让我们一步一个脚印地走一遍。
首先,我们导入numpy
和matplotlib
进行一些计算,然后绘制,
分别是以及matplotboard
本身。
importnumpyasnpimportmatplotlib.pyplotaspltimportmatplotboardasmpb
matplotboard
依赖于底层呈现引擎的matplotlib
,因此
但是,不支持其他打印库
matplotlib
例如seaborn
应该可以工作。
接下来,我们声明一个函数,它将实际执行绘图。
@mpb.decl_figdefcool_fig():xs=np.linspace(-10,10,100)ys=xs**2plt.plot(xs,ys)
装饰器decl_fig
修改函数以使用matplotboard
。一个
用decl_fig
修饰的绘图函数必须满足以下条件
合同:
- 已启动一个干净的
figure
,函数将执行任何绘图 在那个数字上。 - 可以根据需要将图形细分为多个轴,但是
不应创建其他
Figure
对象。 - 函数可以选择返回将呈现的标记文本 以及情节。
- 函数不应该调用
savefig
。由matplotboard
处理 自动
最后,我们声明要生成的实际图形,并告诉matplotboard
呈现图形并将其组合到交互式网页中。
if__name__=='__main__':figures={'cool_fig':cool_fig(),}mpb.render(figures)mpb.generate_report(figures,'Report')
render
和generate_report
都将字典作为第一个参数。
字典键是解释为单个数字的字符串
名称和字典值是我们要生成的图(注意,即使没有参数,也必须调用函数)。
通过编写带参数的绘图函数,可以重用单个函数 制作许多不同的情节。例如,您可能有一个数据集 分为几个类别,您希望为 每一类。可以通过编写一个绘图函数并调用 它使用不同的参数来指定每个类别。
尝试运行示例。如果一切正常,应该在
当前目录名为dashboard
,其中有一个名为
report.html
。用浏览器打开它,可以看到包含单个
阴谋试着点击它放大视图!
一个情节不是很有趣。当有很多绘图要生成时,matplotboard
才真正变得有用。看看下面的例子。
fromitertoolsimportproductimportnumpyasnpimportmatplotlib.pyplotaspltimportmatplotboardasmpb@mpb.decl_figdefcool_fig(func,scale,color='b'):xs=np.linspace(-scale,scale,100)f={'sin':lambdaxs:np.sin(xs),'tan':lambdaxs:np.tan(xs),'exp':lambdaxs:np.exp(xs),}[func]ys=f(xs)plt.plot(xs,ys,color=color)if__name__=='__main__':mpb.configure(multiprocess=True)figures={}forcolor,function,scaleinproduct('rbgk',['sin','tan','exp'],np.linspace(1,20,20)):figures[f'{function}_{color}_{scale}']=cool_fig(function,scale,color=color)mpb.render(figures)mpb.generate_report(figures,'Report')
有什么变化?您可以查看页面here
首先,plotting函数得到了增强,可以接受一些参数
这改变了它的行为。现在可以指定是否要打印
sin
、tan
或exp
以及有效设置x长度刻度。
其次,我们现在正在编程制作所有的绘图颜色组合,
函数,并使用product
函数缩放并为每个
组合。这可以归结为4*3*20=240
不同的图。加快速度
这个例子还打开了matplotboard
的多处理
支持。尝试运行此示例并打开结果网页,就像
以前。注意分页功能限制了
一次。另外,试着选择一个图并在页面上移动这些图
用箭头键。最后,试试右上角的过滤框。少许
有趣的搜索可能是“sin_u”、“r_u”或“tan_u g_u 9”来搜索所有
sin
图,全部是红色图,只有tan_g_9
图。
最后一个例子,让我们看看对编写合并生成的图的报告的支持。
fromitertoolsimportproductimportnumpyasnpimportmatplotlib.pyplotaspltimportmatplotboardasmpb@mpb.decl_figdefcool_fig(func,scale,color='b'):xs=np.linspace(-scale,scale,100)f={'sin':lambdaxs:np.sin(xs),'tan':lambdaxs:np.tan(xs),'exp':lambdaxs:np.exp(xs),}[func]ys=f(xs)plt.plot(xs,ys,color=color)report='''\Authors: Will HuntingDate: December 2, 1997# Report On Functions## IntroductionAs we all know, there are many functions. An example is the sine function seen below.fig::sin_b_1## Other FunctionsHowever, there are many other functions such as the tangent or exponential.<div class="row"><div class="col-md-6 row_fig">fig::tan_r_1|The rugged tangent function</div><div class="col-md-6 row_fig">fig::exp_g_2|The majestic exponential function</div></div>The decision of which function is best is up to *you*!'''if__name__=='__main__':mpb.configure(multiprocess=True)figures={}forcolor,function,scaleinproduct('rbgk',['sin','tan','exp'],np.linspace(1,5,5)):figures[f'{function}_{color}_{int(scale)}']=cool_fig(function,scale,color=color)mpb.render(figures,refresh=False)mpb.generate_report(figures,'Report',body=report)
请参阅此示例的结果here。
generate_report
函数支持可选的body
参数
向r发送matplotboard
信号把降价写进报告,而不是
一个简单的情节转储。一种特殊的语法用于嵌入生成的图形。
fig::figure_name|Optional Caption
Bootstrap
默认情况下包含,因此多个数字并排
可以使用row
div,如示例所示。
除了通过fig::
构造包含生成的图形外,static
图形(如图表或照片)可以通过locfig::
包括在内。
(考虑局部图形)构造,在其中指定
文件的路径。最后,可以指定Internet上的图片
通过extfig::
。