Canvas 3D Graph
Как Вы думаете, при помощи какой программы построен этот график? Excel? DPlot? Какой нибудь PHP скрипт? Нет, этот график сделан при помощи JavaScript и CSS. Называется этот JavaScript - Canvas 3D Graph.
Использовать этот замечательный скрипт очень просто.
- Подгружаем 2 JS файла. (excanvas.js нужен для IE, который не поддерживает тэг <canvas>)
- Создаём пару DIV-ов и нужный нам тэг CANVAS.
- Добавляем немного CSS.
CSS:
-
#g-holder {
-
height:620px;
-
position:relative;
-
}
-
-
#canvasDiv{
-
border:solid 1px #e1e1e1;
-
width:600px;
-
height:600px;
-
position:absolute;
-
top:0px; left:0px;
-
z-index:10;
-
}
-
#x-label{
-
position:absolute;
-
z-index:2;
-
top:340px;
-
left:580px;
-
}
-
-
#y-label{
-
position:absolute;
-
z-index:2;
-
top:10px;
-
left:220px;
-
}
-
-
#z-label{
-
position:absolute;
-
z-index:2;
-
top:540px;
-
left:10px;
-
}
-
-
#gInfo div.gText{
-
position:absolute;
-
z-index:-1;
-
font:normal 10px Arial;
-
}
-
- Готово. Теперь создаём объект и даём ему координаты того, что нужно нарисовать.
HTML:
-
<script type="text/javascript">
-
-
window.onload=function(){
-
-
//Initialise Graph
-
var g = new canvasGraph('graph');
-
-
//define some data
-
gData=new Array();
-
-
gData[0]={x:500,y:500,z:500};
-
gData[1]={x:500,y:400,z:600};
-
gData[2]={x:500,y:300,z:700};
-
gData[3]={x:500,y:200,z:800};
-
gData[4]={x:500,y:100,z:900};
-
-
// sort data - draw farest elements first
-
gData.sort(sortNumByZ);
-
-
//draw graph
-
g.drawGraph(gData);
-
-
}
-
</script>
-
Можно придумать очень много сценариев для использования этой полезной библиотеки с аяксом. Например показывать на графике в реальном времени посещения web сайта. Нужно всего лишь периодически запрашивать сервер, есть ли новые данные о посетителях, и если есть - дополнять график.
del.icio.us Забобрить!2 Comments so far
Leave a reply

Меня больше впечатлил вариант от Timeplot - http://simile.mit.edu/timeplot/ . Тоже чисто JS библиотека, как и описанная выше. Впечатлил по двум причинам: простота в настройках и быстродействие при очень богатой интерактивности. Canvas 3D Graph тоже выстро отрабатывает. Во всяком случаи на их примерах быстро. А вот интерактивность там совсем не показана.
Вообще, при разработке продуктов с rich функциональностью, скрытие от конечного пользователя сложности самой начинки это еще то занятие. Я как раз последние пару дней занимался созданием компоненты в нашу библиотеку для добавления визуальных эффектов на основе prototype и scriptaculous. Процесс сродни запихивания джина назад в бутылку.
Да, классно выглядит. Надо будет как нибудь попробовать в проекте.