Plot 如何在DM脚本中绘制散点图?

Plot 如何在DM脚本中绘制散点图?,plot,dm-script,Plot,Dm Script,我有两个数组,一个包含x坐标,另一个包含y坐标。我想根据x和y坐标在图形中画出这些点,比如散点图。是否可以在DM脚本中绘制二维散点图?lineplot能做到吗?不幸的是,不行。 DM不提供任何非正交数据或稀疏数据的显示。 根据您的X/Y阵列,您可能能够解决该问题。如果您的X值可以表示为X=offset+var*increment,那么您可以通过创建(Xmax-offest)/increment像素的图像并将所有设置为零来伪造散点图,并将X/y对的值去掉 你也可以用2D图像来做。 请注意,常规二维

我有两个数组,一个包含x坐标,另一个包含y坐标。我想根据x和y坐标在图形中画出这些点,比如散点图。是否可以在DM脚本中绘制二维散点图?lineplot能做到吗?

不幸的是,不行。

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

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

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

下面的脚本概述了我的意思。然而,总的来说,我想说的是,DM不是这种类型数据的合适工具


嗨,BmyGuest,你的代码非常有用。但我有一个问题。当我减小采样值时,例如采样=0.08,我在散点图中看不到任何白点。我无法理解导致此问题的原因…请检查图像的显示限制是否设置正确。很可能数据非常稀疏,以至于自动测量限制会排除这些值。然后一切都变成黑色。。。或者你的最终图像太大,以至于屏幕太大,因此显示在zoomHi BmyGuest,是的,我的图像总和不是零,表明我在那里有点。我使用ImageDisplaySetControlLimits将其设置在0和1之间,现在我可以看到这些点了!谢谢。
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)