Java 快速绘图库
我一直在使用白炽灯来满足我的绘图需求,这对我以前的需求来说是足够的,但速度很慢 现在我需要在JPanel中嵌入一个图。用户需要通过拖动和单击与图形交互(例如,单击程序需要接收和处理的某些点)。放大缩小也是必须的 我在其他SO讨论中听说过JFreeChart,但我看到白炽灯使用它作为绘图引擎,当时它似乎有点慢。它实际上很快,但也许白炽灯正在做的事情,使它慢下来 我正在绘制多达200万个点(实际上是简单的xy图),但通常绘制的点较少。使用Matlab,这是绘制在几秒钟,但白炽灯可以挂起分钟 那么JFreeChart是一条路吗?或者别的什么,考虑到我的需要Java 快速绘图库,java,clojure,Java,Clojure,我一直在使用白炽灯来满足我的绘图需求,这对我以前的需求来说是足够的,但速度很慢 现在我需要在JPanel中嵌入一个图。用户需要通过拖动和单击与图形交互(例如,单击程序需要接收和处理的某些点)。放大缩小也是必须的 我在其他SO讨论中听说过JFreeChart,但我看到白炽灯使用它作为绘图引擎,当时它似乎有点慢。它实际上很快,但也许白炽灯正在做的事情,使它慢下来 我正在绘制多达200万个点(实际上是简单的xy图),但通常绘制的点较少。使用Matlab,这是绘制在几秒钟,但白炽灯可以挂起分钟 那么JF
(同样,它需要免费,因为它是用于研究的。)不幸的是,通用图形解决方案可能无法很好地扩展到200万点——这足够大,如果您想要交互式性能,您需要一些专门的东西 我可以看到一些明智的选择:
- 编写您自己的自定义“绘图仪”功能,该功能针对绘制大量点进行了优化。您必须对其进行测试,但我认为,通过在紧密循环中使用setRGB将点直接写入BuffereImage,您可能会获得所需的性能。如果速度仍然不够快,您可以将点直接写入字节数组并构造MemoryImageSource
- 排除点以便仅绘制图形,例如,最多10000点。只要您真正关心散点图的整体形状而不是单个点,这可能是完全可以接受的
- 将所有点预渲染为一个大的BuffereImage,然后允许用户放大和缩小/与此静态图像交互。您可能可以“黑客”JFreeChart来实现这一点
- 如果OpenGL是一个选项(将需要本机代码+获得陡峭的学习曲线!),那么将所有点放在一个大顶点数组中,让图形卡为您完成这一切。将毫不费力地实时处理200万个积分