Plotly JS method to dynamically use the full height/width of a div
P粉012875927
2023-08-25 19:48:49
<p>When the top button is clicked, the size of the container <code>#myDiv</code> changes. How can I make Plotly automatically occupy all available space in a container,<strong>without any noticeable delay</strong>? </p>
<p>There is some higher latency here: </p>
<p>
<pre class="brush:js;toolbar:false;">var z = [], steps = [], i;
for (i = 0; i < 500; i )
z.push(Array.from({length: 600}, () => Math.floor(Math.random() * 100)));
for (i = 0; i < 100; i )
steps.push({ label: i, method: 'restyle', args: ['line.color', 'red']});
var data = [{z: z, colorscale: 'YlGnBu', type: 'heatmap'}];
var layout = {title: '', sliders: [{
pad: {t: 5},
len: 1,
x: 0,
currentvalue: {xanchor: 'right', prefix: 'i: ', font: {color: '#888', size: 20}},
steps: steps
}]};
Plotly.newPlot('myDiv', data, layout);
document.getElementById('button').onclick = () => {
document.getElementById('myDiv').classList.toggle('size2');
Plotly.Plots.resize('myDiv');
}</pre>
<pre class="brush:css;toolbar:false;">#button { background-color: gray; }
#myDiv { width: 500px; height: 300px; border: 2px solid black; }
.size2 { width: 300px !important; height: 200px !important; }</pre>
<pre class="brush:html;toolbar:false;"><script src="https://cdn.plot.ly/plotly-2.16.2.min.js"></script>
<span id="button">Click here to change size</span>
<div id="myDiv"></div>
<div id="text">Hello world</div></pre>
</p>
To make Plotly automatically occupy all available space of the container, you can use the 'autosize' option in the layout object.