2017-10-25 1 views
0

내 주식 차트에 새 데이터 포인트를 추가하는 데 사용하는 함수가 있습니다. 데이터 포인트 중 하나에 아이콘이있는 조건을 만들어야합니다. 나는 stockEvents이 할 수 있다고 볼 수 있지만 내 차트에 표시되지 것 :amChart에 동적으로 stockEvents를 추가하는 방법

function addDataPoint(ask) { 
     var dataProvider = chart.dataSets[0].dataProvider; 
     var newDate = new Date(dataProvider[dataProvider.length - 1].date.getTime()); 
     newDate.setHours(newDate.getHours(), newDate.getMinutes() + 1, newDate.getSeconds()); 
     var a = Math.round(Math.random() * (40 + 1000)) + 100 + 1000; 
     var b = Math.round(Math.random() * 100000000); 
     dataProvider.push({ 
      date: newDate, 
      value: ask, 
      volume: ask 
     }); 
     chart.dataSets[0].stockEvents = [{ 
      date: newDate, 
      type: "flag", 
      text: "F", 
      description: "Some longer\ntext can also\n be added" 
     }]; 
     dataProvider.shift(); 
    } 

답변

1

당신은 그것을 볼 수 있도록 위해서는 주식 이벤트의 graph 속성을 설정해야합니다. 이것은 주식 그래프 오브젝트에 대한 참조이거나 그래프의 id 일 수 있습니다. addDataPoint 기능을 사용하지 않고 차트를 업데이트하려면 validateData으로 전화해야합니다.

AmCharts.makeChart("chartdiv", { 
    // ... 
    "panels": [{ 
    // ... 
    "stockGraphs": [{ 
     // ... 
     "id": "g1", //added id 
     // ... 
    }, 
    // ... 
    ] 
    }, 
    // ... 
    ], 
    // ... 
}); 
// ... 
function addDataPoint(ask) { 
    // ... 
    chart.dataSets[0].stockEvents = [{ 
    date: newDate, 
    type: "flag", 
    text: "F", 
    graph: "g1", //added 
    description: "Some longer\ntext can also\n be added" 
    }]; 
    dataProvider.shift(); 
    chart.validateData(); //added 
} 

addEventPoint 함수에서 매번 stockEvents 배열을 덮어 쓰는 것에 유의하십시오. 이전 이벤트를 유지하려면 어레이이므로 push을 사용해야합니다.

Demo

관련 문제