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

时间:2016-03-04 08:31:58

标签: plot dm-script

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

1 个答案:

答案 0 :(得分:1)

不幸的是没有。

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

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

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

以下脚本概述了我的意思。但是,一般来说,我会说DM不适合这类数据。

enter image description here

enter image description here

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)