[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: построение графика
Страницы: 1, 2
natalina
Доброго времени суток! Значит мне нужно нарисовать множество прямых линий, которые по оси ординат (по определённому условию, сравнивая даты из БД) либо константа, либо ноль, а вот по оси абсцисс, которая является временной осью изменяются. Временная ось должна отображаться примерно так: 00:00 00:01 итак до 23:59, то есть сутки. И ещё обязательно надо при наведении на график видеть отображение этого времени. Я пересмотрела много библиотек и так не смогла найти, что нужно. Реализована нечто похожее c помощью библиотеки amcharts(по ней хоть документация не плохая есть), но выполняется этот скрипт очень медленно, больше минуты, так как там цикл до 1440(именно столько минут в сутках вроде) и наверное ещё может такое торможение связанно с flash прорисовкой. Кстати смотрела и jqplot, там прорисовывает ещё медленнее. Так вот прошу помощи, совета. Может какую-то хорошую библиотеку подскажите, может как рисовать без анимации с помощью amcharts. Может вообще можно это реализовать с помощью GD PHP.
T1grOK
Множество это сколько?
Я делал тоже с интервалом в минуту вывод кривой за сутки. И тоже с помощью amchart. Практически мгновенно прорисовывает.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
natalina
максимум 1440, в чём же может быть проблема
T1grOK
Показать изображение графика можете? Просто я пробовал 5 суток вывести на график. Здесь конечно призадумалась машина...
И точно проблема в формировании графика, а не в выборке данных из базы?

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
alted
Если правильно понял, то график нужен типо этого:
https://google-developers.appspot.com/chart...ery/columnchart

Не подойдет через гугл выводить график?
sergeiss
Библиотека GD2 очень даже может это всё нарисовать, надо только правильно ее "попросить".

Например, вот моя тема: http://phpforum.ru/index.php?showtopic=22888

Оттуда же по ссылкам можно пройти сюда: http://owndesign.ru/tests/rotate/rotate_gr...t.php?id=129812

Как видно, прорисовка идет практически мгновенно (обращаю внимание, что обработка идет именно на сервере), а основным тормозом может быть выборка данных из БД.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
natalina
Цитата (T1grOK @ 23.08.2013 - 19:32)
Показать изображение графика можете? Просто я пробовал 5 суток вывести на график. Здесь конечно призадумалась машина...
И точно проблема в формировании графика, а не в выборке данных из базы?

Вот график, в выборке из БД вроде всё нормально
natalina
Цитата (alted @ 23.08.2013 - 20:23)
Если правильно понял, то график нужен типо этого:
https://google-developers.appspot.com/chart...ery/columnchart

Не подойдет через гугл выводить график?

спасибо, попробую с применением этой библиотеки переделать
natalina
Цитата (alted @ 23.08.2013 - 20:23)
Если правильно понял, то график нужен типо этого:
https://google-developers.appspot.com/chart...ery/columnchart

Не подойдет через гугл выводить график?

Не подскажите как в этом примере заменить статические данные на данные в цикле

for(var i=0; i<10; i++)
{
var data = google.visualization.arrayToDataTable([
[
'Time', 'Выход на связь'],
[
'2004', i]
/* ['2005', 100],
['2006', 100],
['2007', 100]*/

]);
}

так не работает
Lenarfate
<? foreach($data as $key => $val) : ?>
['Time', '<?=$val['time']?>'],
[
'2004', i]
<? endforeach ?>


подставьте только свои данные вместо $data и $val['time']
alted
natalina, можно функцию написать и передавать ей значения массивов. Например, я строил другой график (самый обычный, с ломаной "прямой"), но принцип будет тот же:
	//Функция для построения графика x y//возвращает переменную которую нужно вывести
//вход. знач.: массивы значений и их имена
//$x,$y = array(0,1,2,3) $x_nam,$y_nam = 'fddfd'

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;
}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.