Перейти к содержимому


Графики в программе

графики представления

Сообщений в теме: 38

#1 Lovent

    Активный участник

  • Пользователи
  • PipPipPip
  • 93 сообщений

Отправлено 10 Июнь 2012 - 18:29

Уважаемые разработчики, спасибо Вам за доработку программы. Теперь, как я понимаю, появились штатные (хоть и примитивные, но все же) графики. Не могли бы Вы дать полноценный пример? Или добавить работоспособный график в демо-версию на сайт. Спасибо!

#2 Lovent

    Активный участник

  • Пользователи
  • PipPipPip
  • 93 сообщений

Отправлено 15 Июнь 2012 - 00:23

дайте, пожалуйста, ответ. или ссылку?

#3 Гость_Roman_*

  • Гости

Отправлено 15 Июнь 2012 - 07:04

Документация.

#4 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 22 Июнь 2012 - 14:28

Вот у меня допустим в массиве:
$data['date']
Содержатся даты.

А в массиве:
$data['chisla']
Соответственно содержатся значения по датам.

Как далее то быть?

#5 Гость_Roman_*

  • Гости

Отправлено 22 Июнь 2012 - 14:53

Здесь необходимо создать массив, где ключами будет дата, а значениями числа, т. е. примерно

$data['2012-04-06 10:05:34'] = 23;

Затем данный массив сохранить в другой массив.

$graph_data[] = $data;

Прописать необходимые настройки в третий массив вывести скрипт с помощью функции, параметрами которой являются два последних массива.

$data_gr =  draw_graph($graph_data, $graph_settings);

Переменную $data_gr вывести как обычную переменную Smarty.

#6 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 25 Июнь 2012 - 06:19

А как же сделать массив, где ключами будет дата? :blink:

#7 Гость_Roman_*

  • Гости

Отправлено 25 Июнь 2012 - 07:49

Насколько я понимаю, у Вас массивы $data['date'] и $data['chisla'] имеют чёткое соответствие, тогда можно в цикле пройтись по массиву и получить нужный массив на выходе.

for ($i = 0; $i < count($data['date']); $i++)
  {
    $gr_array[$data['date'][$i]] = $data['chisla'][$i];
  }
Вот и массив, ключами которого является дата.

#8 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 25 Июнь 2012 - 07:53

Спасибо. сейчас попробуем.

#9 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 25 Июнь 2012 - 07:59

Получилось, но криво.... Главный вопрос, как же отсортировать массив по дате, начиная с меньшей даты заканчивая самой большой..

#10 Гость_Roman_*

  • Гости

Отправлено 25 Июнь 2012 - 08:09

Всё зависит от того, как вы формируете массив. Можно же отсортировать данные в самом запросе. Например, поле даты у Вас 111, поле с числами 222.

$sqlQuery = "SELECT `f111`, `f222` FROM `".DATA_TABLE."333` WHERE `status`='0' OR `status`='1' ORDER BY `f111` ASC";
$result = mysql_query($sqlQuery);
while ($row = mysql_fetch_assoc($result))
  {
    $data[$row['f111']] = $row['f222'];
  }


#11 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 265 сообщений
  • Пол:Мужчина

Отправлено 15 Февраль 2013 - 09:55

Вопрос такой - Как сделать точки в узлах графика типа LineDate меньше. а то сильно крупные какие то
Купил лицензию КБ

#12 Гость_Roman_*

  • Гости

Отправлено 15 Февраль 2013 - 10:05

К сожалению, на данный момент никак.

#13 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 265 сообщений
  • Пол:Мужчина

Отправлено 15 Февраль 2013 - 10:09

есть ли возможность использовать отображение графиков в вычислениях ?
Купил лицензию КБ

#14 Гость_Roman_*

  • Гости

Отправлено 15 Февраль 2013 - 10:11

Т.е. использовать их в таблице или при просмотре записи? Такая возможность есть. Необходимо создать текстовое поле с включением HTML-тегов.

#15 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 265 сообщений
  • Пол:Мужчина

Отправлено 15 Февраль 2013 - 10:11

$graph_data = array();
$graph = array();
$query_data="Select add_time, f1705 FROM `cb_data135`where f1704='18345' and status=0 order by add_time";
$query = mysql_query($query_data);
$query_data2="Select max(add_time) as add_time_max, min(add_time) as add_time_min,
max(f1705) as f1705_max,min(f1705) as f1705_min FROM `cb_data135`where f1704='18345' and status=0";
$res2 =mysql_fetch_array(mysql_query($query_data2));
while ($res = mysql_fetch_array($query)){
$graph[$res[0]]=$res[1];
};
$c=count($graph);
print_r($graph[135]);
$graph_data[0]=$graph;
$graph_settings = array('type_graph' => 'LineDate'
			  ,'title' => 'График очереди(дата по х), с zoom'
			  ,'div_id' => 'chart6'
			  ,'series_names' => "'График очереди'"
			  ,'y_max' => round($res2['f1705_max']*1.001)
			  ,'x_max' => $res2['add_time_max']
			  ,'y_min' => round($res2['f1705_min']*0.999)
			  ,'x_min' => $res2['add_time_min']
			  ,'zoom' => true
		    );
$data_gr = draw_graph($graph_data, $graph_settings);
$smarty->assign("graph1", $data_gr);
что содержится и в каком формате в переменной $data_gr ?
Купил лицензию КБ

#16 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 265 сообщений
  • Пол:Мужчина

Отправлено 15 Февраль 2013 - 10:12

Просмотр сообщенияRoman (15 Февраль 2013 - 10:11) писал:

Т.е. использовать их в таблице или при просмотре записи? Такая возможность есть. Необходимо создать текстовое поле с включением HTML-тегов.
например при просмотре поля. что для этого надо сделать?
Купил лицензию КБ

#17 Гость_Roman_*

  • Гости

Отправлено 15 Февраль 2013 - 10:15

Поле должно быть с html-тегами, вычисление должно вставлять туда результат работы функции draw_graph().

#18 Гость_Roman_*

  • Гости

Отправлено 15 Февраль 2013 - 10:20

draw_graph() выдаёт javascript включённый в теги <script>...</script>. Т.е. достаточно просто вставить результат работы этой функции на страницу.

#19 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 265 сообщений
  • Пол:Мужчина

Отправлено 15 Февраль 2013 - 10:55

$graph_data = array();
$graph = array();
$query_data="Select add_time, f1705 FROM `cb_data135`where f1704='".$line['ID']."' and status=0 order by add_time";
$query = mysql_query($query_data);
$query_data2="Select max(add_time) as add_time_max, min(add_time) as add_time_min,
max(f1705) as f1705_max,min(f1705) as f1705_min FROM `cb_data135`where f1704='".$line['ID']."' and status=0";
$res2 =mysql_fetch_array(mysql_query($query_data2));
while ($res = mysql_fetch_array($query)){
$graph[$res[0]]=$res[1];
};
$c=count($graph);
print_r($graph[135]);
$graph_data[0]=$graph;
$graph_settings = array('type_graph' => 'LineDate'
						  ,'title' => 'График очереди(дата по х), с zoom'
						  ,'div_id' => 'chart6'
						  ,'series_names' => "'График очереди'"
						  ,'y_max' => round($res2['f1705_max']*1.001)
						  ,'x_max' => $res2['add_time_max']
						  ,'y_min' => round($res2['f1705_min']*0.999)
						  ,'x_min' => $res2['add_time_min']
						  ,'zoom' => true
					);
$Query="update cb_data114 set f1813='".draw_graph($graph_data, $graph_settings)."' where id=".$line['ID'];
$res=mysql_query($Query);
Поле f1813 - с включенными HTML тегами - ничего не вставляется и не отображается.
вывел запрос, получилось
update cb_data114 set f1813=' ' where id=35051

Сообщение отредактировал OLDest: 15 Февраль 2013 - 10:58

Купил лицензию КБ

#20 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 265 сообщений
  • Пол:Мужчина

Отправлено 15 Февраль 2013 - 11:10

Вопрос решил. Кому нужно выкладываю полный код для отображения графика в поле с HTML
$graph_data = array();
$graph = array();
$query_data="Select add_time, f1705 FROM `cb_data135`where f1704='".$line['ID']."' and status=0 order by add_time";
$query = mysql_query($query_data);
$query_data2="Select max(add_time) as add_time_max, min(add_time) as add_time_min,
max(f1705) as f1705_max,min(f1705) as f1705_min FROM `cb_data135`where f1704='".$line['ID']."' and status=0";
$res2 =mysql_fetch_array(mysql_query($query_data2));
while ($res = mysql_fetch_array($query)){
$graph[$res[0]]=$res[1];
};
$c=count($graph);
print_r($graph[135]);
$graph_data[0]=$graph;
$graph_settings = array('type_graph' => 'LineDate'
						  ,'title' => 'График очереди(дата по х), с zoom'
						  ,'div_id' => 'chart6'
						  ,'series_names' => "'График очереди'"
						  ,'y_max' => round($res2['f1705_max']*1.001)
						  ,'x_max' => $res2['add_time_max']
						  ,'y_min' => round($res2['f1705_min']*0.999)
						  ,'x_min' => $res2['add_time_min']
						  ,'zoom' => true
				    );
$data_gr = draw_graph($graph_data, $graph_settings);
$line['График очереди']="<script type=\"text/javascript\" src=\"include/jquery/jquery.min.js\"></script> 
<script type=\"text/javascript\" src=\"include/jqplot/jquery.jqplot.min.js\"></script>
<link rel=\"stylesheet\" type=\"text/css\" href=\"include/jqplot/jquery.jqplot.min.css\" />
<script type=\"text/javascript\" src=\"include/jqplot/plugins/jqplot.dateAxisRenderer.min.js\"></script>
<script type=\"text/javascript\" src=\"include/jqplot/plugins/jqplot.cursor.min.js\"></script>".draw_graph($graph_data, $graph_settings)."
<div id='chart6'> {$graph1}</div>";
$res=mysql_query($Query);
Див не масштабируется под размер графика, а получается в размер поля с текстом, и в итоге видно только часть графика. как исправить?
Купил лицензию КБ





Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных