java - 如何在所有缩放级别实时准确地绘制大数据 vector ?

标签 java matlab plot zooming large-data-volumes

我有大量数据集(10 Hz 数据,因此每 24 小时有 864k 个点),我需要实时绘制这些数据集。这个想法是用户可以缩放和平移到非常详细的散点图。

数据不是很连续,有尖峰。由于数据集太大,我无法在每次绘图刷新时绘制每个点。

但我也不能只绘制每个第 n 个点,否则我会错过主要特征,例如大而短的尖峰。

Matlab 做对了。您可以给它一个全为零的 864k vector ,只需将任何一个点设置为 1,它就会通过缩放和平移实时正确绘制。

Matlab是怎么做到的?

我的目标系统是 Java,所以我会在 Swing/Java2D 中生成这个图的 View 。

最佳答案

您应该尝试来自 MATLAB Central 的文件:

https://mathworks.com/matlabcentral/fileexchange/15850-dsplot-downsampled-plot

来自作者:

此版本的“绘图”将使您能够可视化具有大量元素的数据。绘制大型数据集会使您的图形变慢,但大多数时候您不需要图中显示的所有信息。您的屏幕只有这么多像素,您的眼睛将无法检测到屏幕上未捕捉到的任何信息。

此函数将对数据进行下采样并仅绘制数据的一个子集,从而提高内存需求。放大绘图时,会显示更多信息。已完成一些工作以确保捕获异常值。

语法:

dsplot(x, y)  
dsplot(y)  
dsplot(x, y, numpoints)  

示例:

x =linspace(0, 2*pi, 1000000);  
y1=sin(x)+.02*cos(200*x)+0.001*sin(2000*x)+0.0001*cos(20000*x);  
dsplot(x,y1);

关于java - 如何在所有缩放级别实时准确地绘制大数据 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/508666/

相关文章:

java - 如何从外部服务收集Java Stream内的数据?

matlab - 从定义它的文件中分离匿名函数

matlab - 对重叠时间测量应用滚动窗口

r - 如何将绘图保存为磁盘上的图像?

matlab - 在matlab中绘制微分误差

R:在情节图例中使用表达式

java - 将递归函数中的数据保存到列表

java - 如何管理多个冗长的字符串常量?

Java日期比较器问题

matlab - 使用 MATLAB 将对数螺旋图像的白色部分转换为散点图