Анимированный линейный график в Javascript?
Я хотел бы сделать линейный график на веб-странице с помощью Javascript. Я хочу, чтобы он был анимирован, чтобы при загрузке страницы линия медленно "рисовалась" на графике.
мне удалось заставить статический график работать, используя флот, однако я не уверен, как его оживить.
Это была бы половина моей работы, чтобы просто сделать это нарисовать линию наполовину вдоль графика, но когда я пытаюсь сделать это путем изменения набора данных, изменяет структуру график также, Так что линия заполняет 100% области графика.
Итак, есть ли способ нарисовать данные линии поэтапно, чтобы я мог ее анимировать?
или, альтернативно, есть ли какая-то другая структура графики javascript, которую я пропустил?
7 ответов
вот простой пример использования 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>
мышление вне коробки (так как поле, которое является flot, мне незнакомо), вы можете просто покрыть график div, который медленно отступает и отображает линию. Сокращение div в javascript является тривиальной задачей даже без сторонних библиотек.
Edit:
Я должен был увидеть, как легко это было, поэтому я бросил это вместе примерно за 10 минут.
<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>
Я написал библиотеку, которая в значительной степени фокусируется на анимации графиков. Обратите внимание на анимацию во время изменения размера. Надеюсь, это поможет вам и всем остальным!
Лин.JS
https://github.com/bluejamesbond/Lyne.js/tree/master
ОБРАЗЕЦ GIF
ЖИВЫЕ ОБРАЗЦЫ
http://bluejamesbond.github.io/Lyne.js/
вы можете изменить flot. Я уже вносил изменения в flot-код. Довольно хорошо написано. Если вы застряли, есть группа google.
или вы могли бы просто научиться использовать холст, который использует flot.
Я тоже хотел добавить анимацию горизонтальной линии в мои флотские диаграммы, к сожалению, для этого нет плагина.
пожалуйста, не стесняйтесь использовать плагин, который я создал для этого:http://www.codicode.com/art/jquery_flot_animator.aspx
вы можете использовать d3js. Изучение d3 займет некоторое время, но это сила, т. е. огромная и беспрецедентная.
https://www.quora.com/How-do-I-learn-D3-js
http://big-elephants.com/2014-06/unrolling-line-charts-d3js/
несколько примеров визуализаций d3:
Я разместил ряд графиков и библиотек диаграмм, которые будут служить вашей цели, а также помогут вам создать диаграмму или визуализацию, которые вам понравятся. Взгляните на эту статью http://shivganesh.com/2015/05/infovizgeek-encyclopedia-for-visualization-tools/