У меня есть 2 массива, один содержит координату x, а другой содержит координаты y. Я хочу изобразить эти точки на фигуре в соответствии с этими координатами x и y, например, в виде точечной диаграммы. Можно ли сделать 2D точечный график в скрипте DM? Может ли линейный сюжет сделать это?
Как сделать точечный график в скрипте DM?
Ответы (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)