Как я могу изменить ограничение профиля линии?

Есть ли возможность изменить ограничения срезов в отображении LinePlot с помощью функции сценария?

Чтобы отсоединить все строки, которые я хочу, в настоящее время мне нужно щелкнуть каждую строку одну за другой и выбрать параметр в меню.

Я не нашел таких команд в документации DM-скрипта. Как я могу сделать такое по сценарию?


person Wade    schedule 28.06.2017    source источник
comment
Я не уверен, что полностью понял ваш вопрос. Вы имеете в виду установку пределов отображения (диапазон оси Y на дисплее)? (наибольшее/наименьшее значение) Или каналы отображения (диапазон оси X на дисплее)? Для них я разместил ответ.   -  person BmyGuest    schedule 28.06.2017
comment
Думаю, мне лучше понять ваш вопрос при втором прочтении и исправить свой ответ. Я также отредактировал ваш исходный вопрос. Пожалуйста, откатитесь, если вы не согласны с моим редактированием.   -  person BmyGuest    schedule 29.06.2017


Ответы (1)


Команды, которые вы ищете, возможно, описаны в разделе «LinePlotDisplays»:

введите здесь описание изображения

Быстрый пример:

image spectrum := RealImage( "Test", 4, 512 )
spectrum = icol * sin( icol/iwidth * 10 * Pi() ) 
spectrum.ShowImage()

imageDisplay disp = spectrum.ImageGetImageDisplay(0)
disp.LinePlotImageDisplaySetDoAutoSurvey( 0, 0 )            // Switch auto-survey off!
disp.LinePlotImageDisplaySetContrastLimits( -50, 100 )      // Set limits (uncalibrated)
disp.LinePlotImageDisplaySetDisplayedChannels( 100, 200 )   // Set X-range in display (uncalibrated)

Однако, если вы имеете в виду настройки, которые можно получить из контекстного меню легенды, то есть введите здесь описание изображения

тогда, боюсь, у меня нет для вас никакой помощи.

Судя по всему, в текущей версии DigitalMicrograph нет скриптового доступа к этой функции.

Однако вы можете «сдвигать и масштабировать» отдельные фрагменты линейного графика относительно друг друга с помощью команд сценария. На самом деле в справочной документации есть пример скрипта, который я просто скопирую сюда:

number deltaX = 10
number deltaY = 20

number kLinePlotType = 3
image spec := GetFrontImage()
if ( !spec.ImageIsValid() ) Throw( "Invalid image" )
if ( 0 == spec.ImageCountImageDisplays() ) Throw( "No Image Display" )

imageDisplay disp = spec.ImageGetImageDisplay(0)
if ( kLinePlotType != disp.ImageDisplayGetDisplayType() ) Throw( "Not a LinePlot." )

number nSlices = disp.LinePlotImageDisplayCountSlices()

// get current reference slice index and its ID
number refSlice_idx = disp.LinePlotImageDisplayGetSlice()
object slice_ref = disp.ImageDisplayGetSliceIDByIndex( refSlice_idx )

for ( number i = 1; i < nSlices; i++ )
{
    object slice_src = disp.ImageDisplayGetSliceIDByIndex( i )
    number int_offset, int_scale
    number pos_offset, pos_scale

    // get current transform factors between slice and reference slice
    disp.LinePlotImageDisplayGetImageToGroupTransform( slice_src, slice_ref, int_offset, int_scale, pos_offset, pos_scale )
    pos_offset = ( i / nSlices ) * deltaX
    int_offset = ( i / nSlices ) * deltaY

    // set new transform factors between slice and reference slice
    disp.LinePlotImageDisplaySetImageToGroupTransform( slice_src, slice_ref, int_offset, int_scale, pos_offset, pos_scale )
}
person BmyGuest    schedule 28.06.2017
comment
Я думаю, что я не ясно описал свой вопрос. Да, я хочу прикрепить/отсоединить фрагменты по сценарию, но на самом деле кажется, что нет функции для управления этим действием. Я все еще ценю вашу любезную помощь. - person Wade; 30.06.2017