我正在构建一个GUI exe应用程序,该应用程序可以显示每个图约2亿个数据点的大数据。到目前为止,我发现可以远程保持良好性能的唯一方法是将Bokeh和Holoviews / HVPLOT与Datashade一起使用。我最初使用Tkinter构建了我的程序,并使用Matplotlib / Seaborn可视化文件将其作为可执行文件运行,但是在绘制大数据时性能上不起作用。我发现使用Datashade的Bokeh可以完成这项工作,但是有没有办法将Bokeh / Holoviews嵌入到Tkinter GUI中?当输出到HTML文件时,Bokeh要么在Jupyter Notebook内部绘制高分辨率图表,要么在分辨率较低的版本中绘制。
答案 0 :(得分:0)
这不是当前直接支持的配置,但是您有一些选择:
可以只显示绘图的裸露图像,无需绘制轴,也可以不覆盖地图或其他类型的数据吗?如果是这样的话,您可以使用datashader.org用户指南中显示的仅Datashader界面,该界面可以生成可以轻松在Tkinter中显示的PNG图像。
如果确实需要轴和数字或文本标签,是否可以将这些屏幕外的内容渲染为可以在Tk中显示的静态PNG,而无需任何交互式控件?如果是这样,您可以将HoloViews与Matplotlib后端一起使用,以将您的Datashader图绘制为PNG并嵌入它们,就像情况1一样。 Datashader user guide中的mpl示例。
如果您确实需要轴并且需要交互式控件(例如,放大和缩小),则有一些work from 2016 on embedding Datashader into Matplotlib with interactive controls。该代码已经运行了两年之久,甚至当时还不够成熟,无法直接包含在Matplotlib或Datashader中,但是看来这可能是让Datashader在Matplotlib有后端的任何地方工作的起点。
如果方法3不起作用,则可以结合使用方法2和3或1和3,显示静态图像,但在Tkinter中手动使用缩放/平移/范围按钮/小部件来构造一个Datashader API调用(选项1)或HoloViews调用(选项2)。这种方法使用起来比较笨拙,但是可以让您实现自己喜欢的任何东西。
希望这些选项之一可以满足您的需求,如果您有任何有用的建议,请让我们知道,以防增加示例!