2016-02-09 5 views
5

Есть ли параметр в Plotly.js, чтобы автомасштабировать оси, чтобы они автоматически соответствовали построенным данным?Plotly.js autoscale

Сценарий: Я планирую температуру (по оси Y) по сравнению с временем (по оси x) в течение последних 30 минут.

Проблема: когда страница загружается, график ничего не показывает. Я бы установил оси, но ось x должна показывать последние 30 минут и обновлять каждую минуту. Однако, когда я нажимаю «Autoscale» или «Reset Axes», график идеально подходит для данных!

Вопрос: Могу ли я настроить график для автоматического «Автомасштабирования» при загрузке страницы, вместо того, чтобы требовать от пользователя «автомасштабирования»?

См приложение здесь: https://vast-fortress-23871.herokuapp.com/

ответ

4

Действительно глупо хак, чтобы добавить это:

document.querySelector('[data-title="Autoscale"]').click() 

Он автоматически нажмите кнопку AutoScale. Лучшим способом было бы выяснить, какую функцию на самом деле вызывает кнопка и называть это.

+0

Это умный, спасибо. Если все остальное не получится, я буду использовать это. – Matte3o

+0

@ Matte3o: Поскольку вы используете JQuery, вы можете, конечно, использовать '$' вместо 'document.querySelector' для более широкой поддержки браузеров. – damd

0

У меня была та же проблема. Код, к которому вы привязаны, был изменен, поэтому я не могу (не буду) его читать, но вот что я сделал не так:

Если plotly.newPlot() работает до того, как все данные будут загружены, то он не будет авторанжироваться (поскольку он имеет нет данных и не знает, чтобы проверить).

например

var plotdata = [x:[],y:[],type: 'scatter']; 
$.get('mydata.dat',(x) => {/*put parsed x into plotdata*/}); 
Plotly.newPlot('mydiv',plotdata,layout); 

отмечают, что plotdata получает заполняется после того, как участок был создан потому, что $.get() является асинхронным.

0

Я решил эту проблему с ретрансляцией. Просто установите свойство autorange на «true» на xaxis и yaxis. Он будет автомасштабирован по обоим осям:

// To call when data is ready, after your page loads. 
Plotly.relayout(yourGraph, { 
    'xaxis.autorange': true, 
    'yaxis.autorange': true 
}); 
Смежные вопросы