从图片到数据
简介
如果您只有一张图表图像,但需要图表背后的数据,该怎么办?如果您决定手动逐点进行操作,那么这可能是一个艰苦的过程。但是,您可以使用 JMP 将数据从图像提取到数据表中,只需几个步骤即可。

步骤 1:导入图像
第一步是将整个图像作为信息放入 JMP 表中。虽然这可以通过脚本完成,但也可以使用出色的“图像到表插件”来完成。我将使用雷克雅未克人口图像作为示例,但任何线图图像都可以。
下载并安装插件后,选择“插件” > “图像分析器”允许我选择图像并将其导入为数据表。数据表包含图像中每个像素的 RGB 数据(以及一些其他信息)。

第 2 步:修复尺度
打开表格后,使用 Graph Builder 重新创建黑白版图像就很简单了。在下面的图片中,我使用 I 列(强度)作为颜色列,并反转 Y 刻度以使其与图像的保存方式相匹配。

现在我可以看到一个直接的问题:图表上的比例与 JMP 中的比例不匹配。这很容易解决;它涉及使用 JMP 中的一些内置功能以及中间数据表。
- 创建一个包含四列(X、Y、所需 X 和所需 Y)的空白数据表。

- 选择图表左下方已知位置的数据点,例如,X 轴表示年份 1896 年,人口表示为 0。在新数据表的所需 X 和所需 Y 列的第 1 行中输入这些值。

- 在“图形生成器”窗口中,选择十字线工具,然后将鼠标悬停在此数据点上。注意给出的 X 和 Y 值。将它们写在 X 和 Y 列的第 1 行中。

- 对图表右上角的已知点重复此过程,记录 X 和 Y 的当前值和期望值。您的表格应如下例所示。

下一步是更改图像数据表中的 X 和 Y 比例值,以匹配图形中显示的内容。本质上,需要对每列应用偏移量和缩放因子。幸运的是,这只是拟合一条线,这是 Fit Y by X 平台的基本功能。在下图中,我已将一条线拟合为 X 和 Y 的当前值与期望值之间的关系。

这里的关键是查看线性拟合的公式。它以 ay = mx + b 公式的形式给出偏移量和比例,其中 m 是比例,b 是偏移量。这些参数可以与 JMP 中的“新公式列”工具一起使用,以快速修复轴。
- 在图像数据表中,右键单击X 列,选择新建公式列>变换>比例偏移...
- 输入从“以 X 拟合 Y”窗口的公式复制的比例因子(此处写为乘数)和偏移量的值。

- 对 Y 列重复此过程。确保输入乘数的负数。
现在,数据表中有了新的 X 和 Y 列,其轴和刻度与图像相匹配。在图形生成器中将轴更改为这些新列可显示这些新轴如何与图像中的轴对齐。

步骤 3:提取数据
剩下的唯一步骤是消除图像数据表中所有不是感兴趣线上的数据点的行。为此, K 均值聚类是一种快速且几乎自动的工具。(特别感谢@landonbw1向我展示这个技巧。)
原始图像似乎有四种颜色:白色、蓝色、灰色和黑色。因此,要求 JMP 将 R、G 和 B 列分成四个簇应该是件很简单的事情,而蓝线应该是其中一个簇。由于图像压缩、颜色混合和其他因素在图像文件中的工作方式,此图像中实际上有 500 多种不同的颜色。不过,我们仍然可以很容易地分离出主要颜色。通常,将簇数设置为可见颜色(普通人认为图像中的颜色)数量的两倍,可以从图像文件中创建单个图形元素的簇。
- 选择分析 > 聚类 > K 均值聚类。
- 在Y 列选择中输入R 、 G和B列,然后选择OK 。
- 在“聚类数”部分中输入8 ,然后选择“Go” 。
- 依次选择“群集摘要”表中的每个群集,同时查看“图形生成器”,以确定该线属于哪个群集。在下图中,突出显示群集 5 仅突出显示图形中该线的数据点。

- 选择除感兴趣的簇(在本例中为 5)之外的所有簇,并从表中删除这些行。现在,剩下的唯一行是图像中图形的数据点。更改一些图形生成器选项会在 JMP 中生成交互式数据图形,而之前只有静态图像。

结论
具有讽刺意味的是,阅读如何将图像中的数据提取到数据表中所花的时间比实际执行该过程所花的时间更长。然而,讽刺的是,也有很多机会可以使用此过程,包括:
- 在研究项目开始时,研究所有可用的文献。
- 对某个流程或产品进行逆向工程。
- 将应力-应变曲线数字化以用于疲劳模型平台。
这为您的工作带来了哪些机遇?
干得好, @Jed_Campbell 。
在许多情况下,数据选择(曲线提取)也可以通过在图形生成器中交互选择感兴趣的点/区域,然后反转行选择(在表格中),然后按行>隐藏和排除。可以以类似的方式删除空白,例如选择一个白点(在图形生成器中)> 选择匹配的单元格(右键单击表格中的单元格)> 行>隐藏和排除。
对我来说已经很好了:)
对于希望直接在 JMP 中从绘图图像中恢复数据的人们来说,这个插件是一大进步——感谢您提供这个插件!
对于其他正在探索类似任务的人,我还推荐一款名为WebPlotDigitizer的免费工具 ( https://automeris.io/WebPlotDigitizer/ )。它已经推出一段时间了,速度惊人,而且用户友好,可以从各种图表中提取数据。4.x 版本是开源的,可以离线使用,非常方便。
很高兴看到有更多工具可用于此类工作。希望这两方面的持续发展能够让数据提取更加无缝衔接!
最近新增了一些非常棒的功能!谢谢@Jed_Campbell !