2015-08-20 9 views
12

ठीक है तो मैं निम्नलिखित कोड है:Plotly अद्यतन डेटा

var element = document.getElementById(scope.changeid); 

function getData(division,redraw) { 
    var employeeData = []; 
    if (!division) { 
     $http.get(api.getUrl('competenceUserAverageByMyDivisions', null)).success(function (response) { 
      processData(response,redraw); 
     }); 
    } 
    else { 
     $http.get(api.getUrl('competenceUserAverageByDivision', division)).success(function (response) { 
      processData(response,redraw); 
     }) 
    } 

} 

function processData(data,redraw) { 
    var y = [], 
     x1 = [], 
     x2 = []; 

    data.forEach(function (item) { 
     y.push(item.user.profile.firstname); 
     x1.push(item.current_level); 
     x2.push(item.expected); 
    }); 

    var charData = [{ 
      x: x1, 
      y: y, 
      type: 'bar', 
      orientation: 'h', 

      name: 'Nuværende' 
     }, { 
      x: x2, 
      y: y, 
      type: 'bar', 
      orientation: 'h', 

      name: 'Forventet' 
     }], 
     layout = { 
      barmode: 'stack', 
      legend: { 
       traceorder: 'reversed', 
       orientation: 'h' 

      } 
     }; 

    if(!redraw){ 
     Plotly.plot(element, charData, layout); 
    } 
    else 
    { 
     Plotly.redraw(element,charData,layout); 
    } 
} 

scope.$watch('divisionId', function (newValue, oldValue) { 
    if (newValue) { 
     getData(newValue.id,true); 
    } 
}, true); 

getData(null,false); 

निम्नलिखित में से कौन चार्ट बनाता है:

enter image description here

अब आप देख सकते हैं के रूप में Ive एक watcher

  scope.$watch('divisionId', function (newValue, oldValue) { 
      if (newValue) { 
       getData(newValue.id,true); 
      } 
     }, true); 
जोड़ा

अब जब मैं इसे ट्रिगर करता हूं तो इसे चार्ट अपडेट करना चाहिए औरपर कॉल करना चाहिए

हालांकि जब ऐसा होता है तो चार्ट बिल्कुल नहीं बदलता है। कंसोल में कोई त्रुटि नहीं है इसलिए मुझे पूरा यकीन नहीं है कि क्या करना है?

+1

आप एक कोणीय निर्देशक में plotly.js का उपयोग कर रहे हैं? –

उत्तर

13

मुझे प्रश्न का उत्तर मिला।

Plotly.newPlot(element,charData,layout); 
बजाय

redraw

+0

यह काम करता है, लेकिन शायद सबसे अच्छा समाधान नहीं है, एक और तरीका होना चाहिए। –

+1

हमम ... http://www.mzan.com/article/35946484-most-performant-way-to-update-graph-with-new-data-with-plotly.shtml –

+0

यह स्मृति को मिटा देगा .. – giuseppe

12

Plotly.redraw(gd) सही तरीका है:

apprently मैं उपयोग करने के लिए की जरूरत है।
लेकिन आप Plotly.redraw गलत तरीके से कॉल करते हैं।
data ऑब्जेक्ट के बजाय data ऑब्जेक्ट को सही तरीके से अपडेट किया गया है।

var data = [ { 
    x: ['VALUE 1'], // in reality I have more values... 
    y: [20], 
    type: 'bar' 
} 
]; 
Plotly.newPlot('PlotlyTest', data); function adjustValue1(value) { 
    data[0]['y'][0] = value; 
    Plotly.redraw('PlotlyTest'); 
} 

रेफरी: http://www.mzan.com/article/35946484-most-performant-way-to-update-graph-with-new-data-with-plotly.shtml

संबंधित मुद्दे