ImPlot:面向亲爱的ImGUI的高级2D绘图

2020-05-10 07:35:21

ImPlot是用于亲爱的ImGui的即时模式绘图小工具。它的目标是提供一流的API,让ImGui用户有宾至如归的感觉。ImPlot非常适合于实时可视化程序数据,并且只需要最少的代码即可集成。就像ImGUI一样,它不会给最终用户带来GUI状态管理的负担,避免了STL容器和C++头文件,并且除了ImGUI本身之外没有任何外部依赖。

多个打印样式选项:10种标记类型、可调整的标记大小、线宽、轮廓颜色、填充颜色等。

具有智能标签的大小感知型电网,始终为1、2和5的10次方倍数。

该API的使用方式与任何其他ImGui BEGIN/END函数一样。首先,使用BeginPlot()启动打印上下文。接下来,使用提供的API函数(例如Plot()、PlotBar()、PlotErrorBars()等)绘制任意数量的项目。最后,用调用EndPlot()来结束。就是这样!

IF(ImGui::BeginPlot(";My Plot";)){ImGui::Plot(";My Line Plot";,x_data,y_data,1000);ImGui::PlotBar(";My Bar Plot";,Values,10);.。ImGui::EndPlot();}。

只需将implot.h、implot.cpp和可选的implotdemo.cpp添加到源代码中即可。这假设您已经有了一个支持ImGUI的环境。如果没有,可以考虑尝试mahi-gui,它为您捆绑了ImGui、ImPlot和其他几个包。

答:ImGui是一个非常强大的快速原型和开发工具,但只提供了有限的数据可视化机制。二维绘图无处不在,几乎对任何应用都很有用。能够实时可视化您的数据将使您能够洞察和更好地理解您的应用程序。

答:是的,在合理范围内。您可以毫无问题地绘制数万到数十万个点,但不要期望绘制超过一百万个点会是一种轻松流畅的体验。我们尽最大努力保持它的速度,并避免内存分配。

答:是的。打印颜色、调色板和各种样式变量可以在启动时永久推送/弹出或修改。

答:也许吧。查看图库和演示,查看是否显示了所需的绘图类型。如果没有,考虑提交一期,或者更好的是,公关!

答:不完全是,但它确实给你提供了查询绘图子区域的能力,你可以用它来随心所欲地处理你的数据。

答:目前没有。如果需要捕获绘图,请使用操作系统的屏幕捕获机制。ImPlot不适合渲染出版质量的绘图;它仅用作可视化工具。出于这些目的,请使用MATLAB和matplotlib对数据进行后处理。

默认情况下,出于性能原因,不会在线条打印上执行消除锯齿。如果你使用4倍的MSAA,那么你可能根本不会注意到。但是,您可以使用ImPlotFlags_AntiAliases标志重新启用AA。

如果计划渲染数千条线或点,则应考虑启用32位索引,方法是在imconfig.h文件中取消注释#Define ImDrawIdx unsign int,或在渲染器中处理ImGuiBackendFlags_RendererHasVtxOffset标志(官方OpenGL3渲染器支持此功能)。如果您未能做到这一点,那么您可能会在某个时候达到可以呈现的最大索引数。