natalina
23.08.2013 - 18:20
Доброго времени суток! Значит мне нужно нарисовать множество прямых линий, которые по оси ординат (по определённому условию, сравнивая даты из БД) либо константа, либо ноль, а вот по оси абсцисс, которая является временной осью изменяются. Временная ось должна отображаться примерно так: 00:00 00:01 итак до 23:59, то есть сутки. И ещё обязательно надо при наведении на график видеть отображение этого времени. Я пересмотрела много библиотек и так не смогла найти, что нужно. Реализована нечто похожее c помощью библиотеки amcharts(по ней хоть документация не плохая есть), но выполняется этот скрипт очень медленно, больше минуты, так как там цикл до 1440(именно столько минут в сутках вроде) и наверное ещё может такое торможение связанно с flash прорисовкой. Кстати смотрела и jqplot, там прорисовывает ещё медленнее. Так вот прошу помощи, совета. Может какую-то хорошую библиотеку подскажите, может как рисовать без анимации с помощью amcharts. Может вообще можно это реализовать с помощью GD PHP.
T1grOK
23.08.2013 - 18:36
Множество это сколько?
Я делал тоже с интервалом в минуту вывод кривой за сутки. И тоже с помощью amchart. Практически мгновенно прорисовывает.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
natalina
23.08.2013 - 18:39
максимум 1440, в чём же может быть проблема
T1grOK
23.08.2013 - 19:32
Показать изображение графика можете? Просто я пробовал 5 суток вывести на график. Здесь конечно призадумалась машина...
И точно проблема в формировании графика, а не в выборке данных из базы?
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Если правильно понял, то график нужен типо этого:
https://google-developers.appspot.com/chart...ery/columnchartНе подойдет через гугл выводить график?
sergeiss
24.08.2013 - 16:13
Библиотека GD2 очень даже может это всё нарисовать, надо только правильно ее "попросить".
Например, вот моя тема:
http://phpforum.ru/index.php?showtopic=22888Оттуда же по ссылкам можно пройти сюда:
http://owndesign.ru/tests/rotate/rotate_gr...t.php?id=129812Как видно, прорисовка идет практически мгновенно (обращаю внимание, что обработка идет именно на сервере), а основным тормозом может быть выборка
данных из БД.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
natalina
27.08.2013 - 14:34
Цитата (T1grOK @ 23.08.2013 - 19:32) |
Показать изображение графика можете? Просто я пробовал 5 суток вывести на график. Здесь конечно призадумалась машина... И точно проблема в формировании графика, а не в выборке данных из базы? |
Вот график, в выборке из БД вроде всё нормально
natalina
27.08.2013 - 14:36
спасибо, попробую с применением этой библиотеки переделать
natalina
27.08.2013 - 16:23
Не подскажите как в этом примере заменить статические данные на данные в цикле
for(var i=0; i<10; i++)
{
var data = google.visualization.arrayToDataTable([
['Time', 'Выход на связь'],
['2004', i]
]);
}
так не работает
Lenarfate
27.08.2013 - 16:39
<? foreach($data as $key => $val) : ?>
['Time', '<?=$val['time']?>'],
['2004', i]
<? endforeach ?>
подставьте только свои данные вместо $data и $val['time']
natalina, можно функцию написать и передавать ей значения массивов. Например, я строил другой график (самый обычный, с ломаной "прямой"), но принцип будет тот же:
function graph($x,$y,$x_nam,$y_nam,$title='') {
$graph = '<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
[\''.$x_nam.'\', \''.$y_nam.'\'],';
foreach ($x as $i=>$g) {
$graph .= '[\''.$g.'\', '.$y[$i].'],';
}
$graph = substr( $graph,0,strlen($graph)-1 );
$graph .=' ]);
var options = {
title: \''.$title.'\',
backgroundColor: \'#cfcfd1\'
};
var chart = new google.visualization.LineChart(document.getElementById(\''.$y_nam.'\'));
chart.draw(data, options);
}
</script>
<div id="'.$y_nam.'" style="width: 800px; height: 200px;"></div>';
return $graph;
}
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.