我一直在使用Incanter来满足我的图形需求,这对我之前的需求来说已经足够但速度很慢.
现在我需要在JPanel中嵌入一个图形.用户需要通过拖动和单击与图形交互(例如,单击程序需要接收和处理的某些点).放大出局也是必须的.
我在其他SO讨论中听说过JFreeChart,但是我看到Incanter使用它作为它的图形引擎,然后它看起来有点慢.它实际上很快,但也许Incanter做的事情会减慢它的速度?
我正在绘制高达200万点(简单的xy-plot,真的),但通常会减少图形.使用Matlab,这可以在几秒钟内绘制,但Incanter可以挂起几分钟.
那么JFreeChart是如何走的?或者其他什么,考虑到我的需求?
(此外,它需要是免费的,因为它适用于研究.)
不幸的是,通用图形解决方案可能无法很好地扩展到200万点 - 这足够大,如果你想要交互式性能,你将需要一些专门的东西.
我可以看到一些明智的选择:
编写您自己的自定义"绘图仪"功能,该功能针对绘制大量点进行了优化.您必须对其进行测试,但我认为您可以通过在紧密循环中使用setRGB将点直接写入BufferedImage来获得所需的性能.如果仍然不够快,可以将点直接写入字节数组并构造MemoryImageSource.
排除点数,这样您最多只能绘制10,000点.只要您只关心散点图的整体形状而不是单个点,这可能是完全可以接受的.
将所有点预渲染为例如大的BufferedImage,然后允许用户放大和缩小/与该静态图像交互.您可以"破解"JFreeChart来执行此操作.
如果OpenGL是一个选项(将需要本机代码+陡峭的学习曲线!),然后将所有点放在一个大的顶点阵列中,并让显卡为你完成所有操作.将毫不费力地实时处理200万点.
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |