Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 快速绘图库_Java_Clojure - Fatal编程技术网

Java 快速绘图库

Java 快速绘图库,java,clojure,Java,Clojure,我一直在使用白炽灯来满足我的绘图需求,这对我以前的需求来说是足够的,但速度很慢 现在我需要在JPanel中嵌入一个图。用户需要通过拖动和单击与图形交互(例如,单击程序需要接收和处理的某些点)。放大缩小也是必须的 我在其他SO讨论中听说过JFreeChart,但我看到白炽灯使用它作为绘图引擎,当时它似乎有点慢。它实际上很快,但也许白炽灯正在做的事情,使它慢下来 我正在绘制多达200万个点(实际上是简单的xy图),但通常绘制的点较少。使用Matlab,这是绘制在几秒钟,但白炽灯可以挂起分钟 那么JF

我一直在使用白炽灯来满足我的绘图需求,这对我以前的需求来说是足够的,但速度很慢

现在我需要在JPanel中嵌入一个图。用户需要通过拖动和单击与图形交互(例如,单击程序需要接收和处理的某些点)。放大缩小也是必须的

我在其他SO讨论中听说过JFreeChart,但我看到白炽灯使用它作为绘图引擎,当时它似乎有点慢。它实际上很快,但也许白炽灯正在做的事情,使它慢下来

我正在绘制多达200万个点(实际上是简单的xy图),但通常绘制的点较少。使用Matlab,这是绘制在几秒钟,但白炽灯可以挂起分钟

那么JFreeChart是一条路吗?或者别的什么,考虑到我的需要


(同样,它需要免费,因为它是用于研究的。)

不幸的是,通用图形解决方案可能无法很好地扩展到200万点——这足够大,如果您想要交互式性能,您需要一些专门的东西

我可以看到一些明智的选择:

  • 编写您自己的自定义“绘图仪”功能,该功能针对绘制大量点进行了优化。您必须对其进行测试,但我认为,通过在紧密循环中使用setRGB将点直接写入BuffereImage,您可能会获得所需的性能。如果速度仍然不够快,您可以将点直接写入字节数组并构造MemoryImageSource

  • 排除点以便仅绘制图形,例如,最多10000点。只要您真正关心散点图的整体形状而不是单个点,这可能是完全可以接受的

  • 将所有点预渲染为一个大的BuffereImage,然后允许用户放大和缩小/与此静态图像交互。您可能可以“黑客”JFreeChart来实现这一点

  • 如果OpenGL是一个选项(将需要本机代码+获得陡峭的学习曲线!),那么将所有点放在一个大顶点数组中,让图形卡为您完成这一切。将毫不费力地实时处理200万个积分


是一个快速免费(GPL)绘图库。但我从未测试过它的java接口(基于swig),因为我不熟悉java:(.因此,如果有人能帮助测试,我将不胜感激。

JFreeChart的替代方案:谢谢你的建议:我可能会考虑使用OpenGL或在某个时间只绘制所需的点。但是,MatLab似乎可以很好地处理约100-200万点–这是在一个旧的、蹩脚的Dell上。你可以减少使用Douglas Peucker算法保持整体形状时任意点:@Isaac-我希望MatLab内部使用类似于我提到的方法之一。我将使用(嗯,尝试…)滚动我自己的OpenGL替代方案。另外,第2点将与我的概览图一起使用!干杯,谢谢。@Isacc-没问题,祝你好运!如果你还没有找到它们,那么很值得一看Java OpenGL示例的NEHE Java端口。。。。