Animated line graph in Javascript?

后端 未结 7 1787
孤街浪徒
孤街浪徒 2021-02-02 17:26

I\'d like to do a line-graph on a web-page using Javascript. I want it to be animated so that when the page loads, the line is slowly \"drawn\" onto the graph.

I\'ve ma

相关标签:
7条回答
  • 2021-02-02 17:47

    You could modify flot. I've made changes to the flot code before. It's fairly well-written. There's a google group if you get stuck.

    Or you could just learn how to use Canvas, which is what flot uses.

    0 讨论(0)
  • 2021-02-02 17:50

    I have put across a series of Graphs and Chart Libraries that would serve your purpose as well as help you create the chart or visualization that you would please. Have a look at this article http://shivganesh.com/2015/05/infovizgeek-encyclopedia-for-visualization-tools/

    0 讨论(0)
  • 2021-02-02 17:52

    You may use d3js. Learning d3 will take some time, but it's power ie enormous and unparalleled.

    https://www.quora.com/How-do-I-learn-D3-js

    http://big-elephants.com/2014-06/unrolling-line-charts-d3js/

    A few examples of d3 visualizations:

    Official d3 Website

    Something I've built for an NGO

    0 讨论(0)
  • 2021-02-02 17:59

    Here's a simple example using Flot

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Flot Examples</title>
    <link href="layout.css" rel="stylesheet" type="text/css"></link>
    <!--[if IE]><script language="javascript" type="text/javascript" src="../excanvas.pack.js"></script><![endif]-->
    <script language="javascript" type="text/javascript" src="../jquery.js"></script>
    <script language="javascript" type="text/javascript" src="../jquery.flot.js"></script>
    </head>
    <body>
    <h1>Animated Flot Example</h1>
    <div id="placeholder" style="width:600px;height:300px;"></div>
    <script id="source" language="javascript" type="text/javascript">
    $(function () {
        var linePoints = [[0, 3], [4, 8], [8, 5], [9, 13]];
        var i = 0;
        var arr = [[]];
        var timer = setInterval(function(){
         arr[0].push(linePoints[i]);
         $.plot($("#placeholder"), arr);
         i++;
         if(i === linePoints.length)
            clearInterval(timer);
        },300);
    });
    </script>
     </body>
    </html>
    
    0 讨论(0)
  • 2021-02-02 18:04

    I have written a library that focuses heavily on animation of graphs. Notice the animation during resizes. Hope this helps you and everyone else!

    LYNE.JS

    https://github.com/bluejamesbond/Lyne.js/tree/master
    

    GIF SAMPLE

    enter image description here

    LIVE SAMPLES

    http://bluejamesbond.github.io/Lyne.js/
    
    0 讨论(0)
  • 2021-02-02 18:06

    Thinking outside the box (since the box that is flot is unfamiliar to me), you could just cover the graph with a div which slow recedes and displays the line. Shrinking a div in javascript is a trivial task even without third party libraries.

    Edit:

    I had to see how easy it was, so I threw this together in about 10 mins.

    <html>
    <head>
    </head>
    <body>
    
    <div style="width:480px;height:480px;position:relative;">
    <img onload="setTimeout(function(){reduce();}, interval);" src="http://images.freshmeat.net/editorials/r_intro/images/line-graph-1.jpg" />
    <div id="dvCover" style="position:absolute;width:370px;height:320px;background-color:white;border:solid 1px white;top:70px;left:70px;"></div>color:white;border:solid 1px blue;top:70px;left:70px;"></div>
    </div>
    
    <script type="text/javascript">
    var step = 3;
    var interval = 20;
    var cover = document.getElementById("dvCover");
    var currentWidth = 370;
    var currentLeft = 70;
    setTimeout(function(){reduce();}, interval);
    
    function reduce()
    {
        if (currentWidth > 0)
        {
            currentWidth -= step;
            currentLeft += step;
            cover.style.width = currentWidth + "px";
            cover.style.left = currentLeft + "px";
    
            setTimeout(function(){reduce();}, interval);
        }
        else
        {
            cover.style.display = "none";
        }
    }
    </script>
    
    </body>
    </html>
    
    0 讨论(0)
提交回复
热议问题