2017-08-16 15 views
1

私はPlotlyで3D散布図を作成するためにJavaScriptを使用しています。最初は、軸の範囲を指定しません。しかし、プロットが最初に描画された後に手動でzaxis範囲を設定するようにしたいと思います。そのユーザーインタラクションでは、既存の(描画された)設定で範囲値を設定する必要があります。既存のPlotly scatter3dグラフからzaxis範囲を抽出するにはどうすればよいですか?それはscatter3Dプロットさんのコメントで示されているようにPlotly 3Dからzaxisの範囲を取得

Plotly.d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv', function(err, rows) { 
 
    function unpack(rows, key) { 
 
    return rows.map(function(row) { 
 
     return row[key]; 
 
    }); 
 
    } 
 

 
    
 
    var data = []; 
 
    
 
    for (i = 0; i < 24; i += 1) { 
 

 
    var x_row = [], 
 
     y_row = [], 
 
     z_row = unpack(rows, i); 
 
    
 
    for (var j = 0; j < z_row.length; j++) { 
 
     x_row.push(i); 
 
     y_row.push(j); 
 
    } 
 
    
 
    data.push({ 
 
     x: x_row, 
 
     y: y_row, 
 
     z: z_row, 
 
     mode: 'lines', 
 
     line: { 
 
     color: '#FF00FF' 
 
     }, 
 
     type: 'scatter3d' 
 
    }); 
 
    } 
 
    
 
    Plotly.newPlot('myDiv', data); 
 

 
    document.getElementById('cmax').innerHTML = 'Max: ' + data[0].cmax; 
 
    document.getElementById('cmin').innerHTML = 'Min: ' + data[0].cmin; 
 
});
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script> 
 
<div id='cmax'></div> 
 
<div id='cmin'></div> 
 
<div id="myDiv"></div>

答えて

1

は、解決策は、以下の3次元表面プロットのために動作します。 scatter3DプロットのPlotlyは、入力配列の最小値と最大値に基づいて軸範囲を計算します。

sceneBounds[0][i] = Math.min(sceneBounds[0][i], objBounds[0][i]/dataScale[i]); 

そこからは、最小/最大値(+いくつかの余分なスペース)に手動で範囲を設定することができたり、空の範囲を離れるとmax RESPを使用してデフォルト値を移入します。最小値。


plotlyは、最大値と最小値をcmax respに設定します。 newPlot関数に渡されるデータオブジェクトのcmin

Plotly.d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv', function(err, rows) { 
 
    function unpack(rows, key) { 
 
    return rows.map(function(row) { 
 
     return row[key]; 
 
    }); 
 
    } 
 

 
    var z_data = [] 
 
    for (i = 0; i < 24; i += 1) { 
 
    z_data.push(unpack(rows, i)); 
 
    } 
 

 
    var data = [{ 
 
    z: z_data, 
 
    type: 'surface' 
 
    }]; 
 
    
 
    Plotly.newPlot('myDiv', data); 
 
    
 
    document.getElementById('cmax').innerHTML = 'Max: ' + data[0].cmax; 
 
    document.getElementById('cmin').innerHTML = 'Min: ' + data[0].cmin; 
 
});
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script> 
 
<div id='cmax'></div> 
 
<div id='cmin'></div> 
 
<div id="myDiv"></div>

+0

あなたの答えをいただき、ありがとうございます。私は情報の重要な部分を除外したようだ。チャートタイプはscatter3dです。その場合、cmaxとcminはdata [0]に追加されません。あなたのような例で質問を更新します。 –

+0

@JimNorman:更新された回答を参照してください、私は答えが私が思うほど簡単であることを願っています。 –

関連する問題