Синтаксическая проблема для plot.ly scatter3d - PullRequest
0 голосов
/ 12 июня 2019

Я новичок в plot.ly и пытаюсь заставить синтаксис работать правильно. Образец диаграммы scatter3d почти идеально подходит для моих нужд, но он получает данные из CSV. Это само по себе хорошо; Я могу сделать свой собственный CSV и вставить его, но это немного неуклюже - я бы предпочел получать данные напрямую из базы данных MySQL.

Я посмотрел некоторые из их начальных документов о типах и могу создать двухмерную диаграмму рассеяния, в которой я просто указываю координаты X / Y. Но если я захочу попасть в трехмерную диаграмму, у меня все пойдет не так.

Этот код прекрасно работает.


Plotly.d3.csv('mydata.csv', function(err, rows){

    function unpack(rows, key) {
        return rows.map(function(row) { return row[key]; });
    }

    var data = [{
        x: unpack(rows, 'x'),
        y: unpack(rows, 'y'),
        z: unpack(rows, 'z'),
        mode: 'markers',
        type: 'scatter3d',
        marker: {
          color: 'rgb(10, 100, 240)',
          size: 2
        }
    },{
        alphahull: 7,
        opacity: 0.1,
        type: 'mesh3d',
        x: unpack(rows, 'x'),
        y: unpack(rows, 'y'),
        z: unpack(rows, 'z')
    }];



    var layout = {
        autosize: true,
        height: 1200,
        scene: {
            aspectratio: {
                x: 1,
                y: 1,
                z: 1
            },
            camera: {
                center: {
                    x: 0,
                    y: 0,
                    z: 0
                },
                eye: {
                    x: 1.25,
                    y: 1.25,
                    z: 1.25
                },
                up: {
                    x: 0,
                    y: 0,
                    z: 1
                }
            },
            xaxis: {
                type: 'linear',
                zeroline: false
            },
            yaxis: {
                type: 'linear',
                zeroline: false
            },
            zaxis: {
                type: 'linear',
                zeroline: false
            }
        },
        title: 'My Test',
        width: 1600
    };

    Plotly.newPlot('myDiv', data, layout);

});

Но опять же, я бы лучше указал свои координаты во время выполнения. Кроме того, это позволит мне дать различные диапазоны, которые можно по-разному кодировать и еще много чего.

Итак, я вытащил кусочки CSV и добавил свои координаты вручную ... и ничего не делает. Нада.

Вот что я пытаюсь.


 var data = [{
  x: [34, 41, 28, 22, 15, 26],
  y: [5, -2, 14, -9, 15, -12],
  z: [5, 7, 4, 8, -7, 1],
        mode: 'markers',
        type: 'scatter3d',
        marker: {
          color: 'rgb(10, 100, 240)',
          size: 2
        }
    },{
        alphahull: 7,
        opacity: 0.1,
        type: 'mesh3d',
  x: [34, 41, 28, 22, 15, 26],
  y: [5, -2, 14, -9, 15, -12],
  z: [5, 7, 4, 8, -7, 1],
    }];



    var layout = {
        autosize: true,
        height: 1200,
        scene: {
            aspectratio: {
                x: 1,
                y: 1,
                z: 1
            },
            camera: {
                center: {
                    x: 0,
                    y: 0,
                    z: 0
                },
                eye: {
                    x: 1.25,
                    y: 1.25,
                    z: 1.25
                },
                up: {
                    x: 0,
                    y: 0,
                    z: 1
                }
            },
            xaxis: {
                type: 'linear',
                zeroline: false
            },
            yaxis: {
                type: 'linear',
                zeroline: false
            },
            zaxis: {
                type: 'linear',
                zeroline: false
            }
        },
        title: 'My Test',
        width: 1600
    };

    Plotly.newPlot('myDiv', data, layout);

Если кто-нибудь может указать, где я глуп, я был бы очень признателен.

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