2

我有 2 个数组,一个包含 x 坐标,另一个包含 y 坐标。我想根据那些 x 和 y 坐标在图中绘制出这些点,例如散点图。是否可以在 DM 脚本中制作二维散点图?线图可以吗?

4

1 回答 1

1

不幸的是没有。

DM 不提供任何非正交数据或稀疏数据的显示。

根据您的 X/Y 数组,您可能能够解决该问题。如果您的 X 值可以表示为X = offset + var * increment,那么您可以通过创建像素图像并将全部设置为零来伪造散点图(Xmax - offest)/increment,排除 x/y 对的值。

也可以使用 2D 图像来做到这一点。请注意,常规的 2D 显示将在左上角有 0/0 原点。要获得更“常规”的显示,您可以垂直翻转(并调整校准)。

以下脚本概述了我的意思。但是,总的来说,我会说 DM 不是此类数据的合适工具。

在此处输入图像描述

在此处输入图像描述

image xVals := [5,1]:
{
   { 2.5, 9.75, 5, 10.25, 4 }
}

image yVals := [5,1]:
{
   { 4.25, 3, 8.75, 11, 4.25 }
}

number sampling = 0.25  // Small enough to fit your data to integer!
image xValSampled = trunc( xVals / sampling )
number sizeX = 10 + max(xValSampled) 

image scatterPlot := RealImage( "Scatter (1D)", 4, sizeX)
scatterPlot = 0
scatterPlot[ xValSampled, 0 ] = yVals
scatterPlot.ImageSetDimensionScale(0,sampling)
scatterPlot.ShowImage()


image yValSampled = trunc( yVals / sampling )
number sizeY = 10 + max(YValSampled)

image scatter := RealImage( "Scatter (2D)", 4, sizeX, sizeY )
scatter = 0
scatter.ImageSetDimensionScale(0,sampling)
scatter.ImageSetDimensionScale(1,sampling)
scatter[ xValSampled, yValSampled ] = 1
scatter.ShowImage()
scatter.ImageGetImageDisplay(0).ImageDisplaySetCaptionOn(1)

image scatterInverted := scatter.ImageClone()
scatterInverted.SetName("Scatter (2D) inv.")
FlipVertical(scatterInverted)
scatterInverted.ShowImage()
scatterInverted.ImageGetImageDisplay(0).ImageDisplaySetCaptionOn(1)
scatterInverted.ImageSetDimensionScale(1,-sampling)
scatterInverted.ImageSetDimensionOrigin(1,sizeY*sampling)
于 2016-03-04T09:30:43.870 回答