2015-10-28 3 views
3

Я пытаюсь создать диаграмму, используя canvasjs.js.Масштабирование диаграммы холста canvasjs при нажатии кнопки

canvasjs.js встроенный обеспечивает масштабирование и панорамирование, перетаскивая мышь на панели, но мне нужно сделать масштабирование и панорамирование нажатием кнопки. Вот мой код, который я попытался создать диаграмму нажатием кнопки DrawGraph.

<div id="chartContainer" style="height: 250px; width: 100%; margin: auto; border:1px solid black;"> 
</div> 
<button type="button" id="zoom-in" onclick="DrawGraph()"> 
    DrawGraph</button> 
<button onclick="Reset()">Reset</button> 
<input type="button" value="+" onClick="zoomIn()"/> 
<input type="button" value="-" onClick="zoomOut()"/> 

<script> 
function DrawGraph() { 
    var arr=[]; 
    for(i=0;i<100;i++) 
    { 
     if(i%2==0) 
     { 
     arr.push({x:i,y:10,color:"red"}) 
     } 
     else 
     { 
     arr.push({x:i,y:10,color:"blue"}) 
     } 
    } 

    var chart = new CanvasJS.Chart("chartContainer", 
    { 

    zoomEnabled: true, 
    width: 760, //Sets the Canvas Width 
    height: 150, // Sets the Canvas Height 
    theme: "theme3", // Sets the Theme (we have theme-1.theme-2,theme-3)- Default theme-1 
    // X axis Grid Thickness and Inteval that Points Should Represents (ex: 0-3000) 
    axisX: { 
     gridThickness: 0.0, 
     labelFontSize: 0.1, // x-axis label 
     tickLength: 0.0, // separation between the labels 
     lineThickness: 1, // x-axis Line thickness 
      minimum: 0, 

    }, 
    // Y axis Grid Thickness and Inteval that Points Should Represents (ex: 0-3000) 
    axisY: { 
     gridThickness: 0.0, 
     interval: 10, 
     labelFontSize: 0.1, 
     tickLength: 0.0, 
     lineColor: "white", // Line Color Y-axis 
     lineThickness: 0.1 
    }, 
    toolTip:{ 
     enabled: false, 
    }, 
    dataPointMaxWidth: 5, // Setting maximum width of columns 
    // X and Y value settings 
    data: [ 
    { 
     type: "column", 
     click: onClick, 
     //   mouseover: onMouseover, 
     dataPoints: arr 
    }] 
}); 
    // Canvas Js 
    chart.render(); 
    // chart.Reset(); 
    function onClick(e) { 
     alert(e.dataSeries.type + ", dataPoint { x:" + e.dataPoint.x + ", y: " + e.dataPoint.y + " }"); 

    }  
    } 
</script> 

ниже является jsfiddle: jsfiddle

любая помощь очень ценится. Спасибо заранее.

ответ

1

Вы можете установить viewportMaximum и viewportMinimum значения по осям и отобразить график на v1.8 (бета-версия), но с текущей версией это невозможно в соответствии с разработчиком.

Вопрос: Также есть ли программный доступ к масштабированию и панорамированию API? поэтому мы можем использовать кнопки масштабирования для быстрого масштабирования, например, 1 неделю, 1 месяц и т. д.?

A: На данный момент нет доступа к этим данным. Но я рассматриваю доступ API для будущих версий.

Вот более подробная информация о v1.8: http://canvasjs.com/blog/10/07/sync-multiple-chart-ranges-zoom-vertically

Может быть, вы можете использовать другую библиотеку диаграммы. http://www.highcharts.com/stock/demo/basic-line

Смежные вопросы