Общий JavaScript-узел в Knime с использованием Plotly - PullRequest
0 голосов
/ 16 ноября 2018

Я новичок в Knime и Java.

Я пытаюсь создать анимированный график в узле общего JavaScript. Я был успешно закодирован (результаты ожидаемые, но я думаю, что это может быть лучше закодировано).

Например:

Чтобы получить информацию из узла предварительного просмотра, мы использовали:

            var h1= knimeDataTable.getColumn(1);
            var h2= knimeDataTable.getColumn(2);
            var h3= knimeDataTable.getColumn(3);
            var h4= knimeDataTable.getColumn(4);
            var h5= knimeDataTable.getColumn(5);
            .
            .
            .
            var h55= knimeDataTable.getColumn(55);
            var h56= knimeDataTable.getColumn(56);
            var h57= knimeDataTable.getColumn(57);
            var h58= knimeDataTable.getColumn(58);
            var h59= knimeDataTable.getColumn(59);
            var h60= knimeDataTable.getColumn(60);

Затем мы заменяем весь код предварительного просмотра следующим:

for (var i = 1; i < 61; i++) {
this[“h”+i] = knimeDataTable.getColumn(i);
}

И работает правильно!.

Мы хотим сделать то же самое со следующей частью кода:

            steps: [
            {label: n[1], method: ‘animate’, args: [[n[1]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[2], method: ‘animate’, args: [[n[2]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[3], method: ‘animate’, args: [[n[3]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[4], method: ‘animate’, args: [[n[4]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[5], method: ‘animate’, args: [[n[5]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            .
            .
            .
            {label: n[55], method: ‘animate’, args: [[n[55]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[56], method: ‘animate’, args: [[n[56]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[57], method: ‘animate’, args: [[n[57]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[58], method: ‘animate’, args: [[n[58]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[59], method: ‘animate’, args: [[n[59]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            {label: n[60], method: ‘animate’, args: [[n[60]], { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} }]},
            ]

Для этой части кода кто-то предлагает использовать следующий код:

            var n=knimeDataTable.getColumnNames();

            for (var i = 1; i < 61; i++) {
            this[“h”+i] = knimeDataTable.getColumn(i);
            this[“c”+i] = knimeDataTable.getColumn(60+i);

            var current_n = this[“n”+i];
            var current_args = new Array();
            var sub_obj = { mode: ‘immediate’, frame: {redraw: false, duration: 500}, transition: {duration: 500} };

            current_args.push([current_n]);
            current_args.push(sub_obj);

            var sub_array = new Object(),
            label = current_n,
            method = ‘animate’,
            args = current_args;

            auto_steps.push(sub_array);
            }

но не работает

и эту часть кода мы хотим сделать так же:

            frames:[
            {name: n[1], data: [{ y: h1, marker: {color: c1, size: s0}}]},
            {name: n[2], data: [{ y: h2, marker: {color: c2, size: s0}}]},
            {name: n[3], data: [{ y: h3, marker: {color: c3, size: s0}}]},
            {name: n[4], data: [{ y: h4, marker: {color: c4, size: s0}}]},
            {name: n[5], data: [{ y: h5, marker: {color: c5, size: s0}}]},
            .
            .
            .
            {name: n[55], data: [{ y: h55, marker: {color: c55, size: s0}}]},
            {name: n[56], data: [{ y: h56, marker: {color: c56, size: s0}}]},
            {name: n[57], data: [{ y: h57, marker: {color: c57, size: s0}}]},
            {name: n[58], data: [{ y: h58, marker: {color: c58, size: s0}}]},
            {name: n[59], data: [{ y: h59, marker: {color: c59, size: s0}}]},
            {name: n[60], data: [{ y: h60, marker: {color: c60, size: s0}}]},
            ]

мы думали, что будет работать что-то вроде следующего кода, но не:

            for (var i = 1; i < 61; i++) {
            {name: n[i], data: [{ y: h[i], marker: {color: c[1], size: s0}}]},
            }

Может кто-нибудь помочь мне поместить все эти коды в цикл?

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