[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Построение графиков в GD
sergeiss
Я тут несколько раз упоминал про то, что основное делу у меня сейчас - это развитие внутрикорпоративного сайта, обрабатывающего статистику.

В связи с чем хочу похвалиться smile.gif На приложенной картинке - данные по одному из важных параметров. А вообще такие графики строятся почти по десятку параметров.

Только что доделал модуль, строящий "объёмные" графики. Сделал за пару дней неторопливых дней, хотя хотел сделать уже давно.

Сначала данные выбираются из БД, затем переформатируются и кладутся в отдельную табличку, где они могут быстро и многократно считаны. После чего в скрипт, который уже окончательно строит график, передается только ID нужного графика.

Ранее в этой софтине делались только "двумерные" графики, т.е. (брались данные) за один день. И надо было просматривать ряд графиков подряд за несколько дней, чтобы найти проблемную точку. Либо - делалось суммирование за период времени. Для получения общей информации.

user posted image



Спустя 4 минуты, 12 секунд (11.11.2009 - 23:27) Gabriel написал(а):
ничегосебе О_О ты заставляеш мну чувствовать себя человеком который вообще незнает, что такое php и как его есть

Спустя 4 минуты, 11 секунд (11.11.2009 - 23:31) sergeiss написал(а):
Gabriel - да ты знаешь... От ПХП тут мало вообще smile.gif Подобную картинку можно и в Си нарисовать. Тут больше алгоритм важен.

А вообще - "учись, студент" smile.gif

Спустя 8 минут, 32 секунды (11.11.2009 - 23:39) kirik написал(а):
sergeiss
Круто! Респект! Красиво получилось smile.gif

ЗЫ
еще флэш прикрутить, будет вообще удобная системка smile.gif

Спустя 1 минута, 25 секунд (11.11.2009 - 23:41) Gabriel написал(а):
sergeiss
Цитата
А вообще - "учись, студент"  smile.gif

laugh.gif а деваться некуда laugh.gif

Спустя 18 минут, 6 секунд (11.11.2009 - 23:59) sergeiss написал(а):
kirik - а что может дать флэш в этом случае?

Спустя 1 минута, 30 секунд (12.11.2009 - 00:00) Gabriel написал(а):
sergeiss
ну наверное можно будет покрутить его в разные стороны

Спустя 18 минут, 16 секунд (12.11.2009 - 00:19) sergeiss написал(а):
Чтобы флэш мог "покрутить" картинку, надо передать несколько картинок этому флэшу. В разных проекциях.
А у меня строится пока только в одной проекции smile.gif Когда же я сделаю возможность посмотреть с разных сторон, то тогда я лучше на JS сделаю реализацию смены этих картинок.

Спустя 14 минут, 54 секунды (12.11.2009 - 00:34) Grazor написал(а):
ohmy.gif супер!
даже не представляю, как такое можно реализовать. всё так аккуратненько, ровненько

просто любопытно, сам скрипт построения изображения (не считая работу с бд и тп) большой получился? smile.gif

Спустя 3 минуты, 30 секунд (12.11.2009 - 00:37) Grazor написал(а):
а насчёт флеша (или js, если возможно), что мне приходит в голову - так это по наведению на столбик показывать всплывающую подсказку со значением данного столбика

Спустя 6 часов, 48 минут, 7 секунд (12.11.2009 - 07:25) Michael написал(а):
прикольно (универ прям вспомнил).
sergeiss, а в GD есть уже какой то функционал для построения графиков,
или все поверхности самому пришлось рисовать?
Скрипт по скорости не сильно тормозит выдачу?

P.S. вообще такого типа скрипт очень хорошо бы украсил любой блог программиста.
И алгоритм/функционал есть, мясо так сказать в программировании. И клиентам есть об что глазки поточить.

Спустя 1 час, 43 минуты, 34 секунды (12.11.2009 - 09:09) sergeiss написал(а):
Цитата (Grazor @ 12.11.2009 - 01:34)
сам скрипт построения изображения (не считая работу с бд и тп) большой получился?

Около 600 строк, из которых функциональных только где-то четверть, наверное. Остальные - либо пустые, либо каменты.

Цитата (Michael @ 12.11.2009 - 08:25)
или все поверхности самому пришлось рисовать?

Всё сам smile.gif Использовал для рисования всего 4 функции: заполненный полигон, обводка полигона, рисование линии и рисование текста.
Цитата (Michael @ 12.11.2009 - 08:25)
Скрипт по скорости не сильно тормозит выдачу?

А чего ему тормозить-то? За долю секунды и готовятся все данные, и строятся графики (в максимальном варианте - одновременно по 5 показателям). Тут тормозить просто нечему, вобщем-то.

Цитата (Grazor @ 12.11.2009 - 01:37)
а насчёт флеша (или js, если возможно), что мне приходит в голову - так это по наведению на столбик показывать всплывающую подсказку со значением данного столбика

Не уверен, что это получится smile.gif Хотя, конечно, можно поизвращаться попробовать... Стандартными средствами HTML (через выделение регионов в картинках) + JS. Но это усложнит алгоритм. Хотя, конечно, можно будет вообще сделать "конфетку". Но меня и без того много задач на очереди, которые надо реализовывать, и у которых более высокий приоритет.

Спустя 25 минут, 48 секунд (12.11.2009 - 09:35) Michael написал(а):
Цитата (sergeiss @ 12.11.2009 - 06:09)
Всё сам smile.gif Использовал для рисования всего 4 функции: заполненный полигон, обводка полигона, рисование линии и рисование текста.

сначала оси рисуются, потом движение по одной из осей(X или Y) от начала к концу и следующая картинка
рисуется поверх уже нарисованной предыдущей с указанным смещением, так делали?

Вообще при желании можно к такому графику передавать в javascript данные о контурах, чтобы уже в окне браузера при наведении мышки что-то делалось.

Про скорость это ж так, для интереса. Вот думаю если такой график создать
и при перемещении указателя мыши чтобы выделялся другим цветом определенный ряд
(на AJAX) и возможно снизу двумерная версия менялась ...
мечты наверное.

Спустя 1 час, 58 минут, 12 секунд (12.11.2009 - 11:33) Семён написал(а):
Уважение за терпение в написании этого скрипта.

Спустя 7 часов, 41 минута, 20 секунд (12.11.2009 - 19:14) kirik написал(а):
Цитата (sergeiss @ 11.11.2009 - 15:59)
а что может дать флэш в этом случае?

Цитата (Gabriel @ 11.11.2009 - 16:00)
ну наверное можно будет покрутить его в разные стороны

Не.. крутить его бесполезно. А вот например сделать так, чтобы при наведении на параллелепипед подсвечивались его координаты по 3м осям - это добавит удобства в использовании smile.gif

Спустя 3 часа, 32 минуты, 6 секунд (12.11.2009 - 22:46) sergeiss написал(а):
Эдак лучше уж создать набор параллелепипедов (отдельных объектов-картинок), задать их "слоистость", т.е. что на заднем плане, что на переднем. Задать каждому объекту свою подсказку... Всё это передать в JS - и пожинать лавры smile.gif
Вообще, надо будет подумать об этом... Тогда можно будет и покрутить картинку, и вывести подписи при наведении на объект. Задача вполне реализуемая, вроде как.
Ежели сделаю - то покажу обязательно.

Спустя 1 час, 18 минут, 16 секунд (13.11.2009 - 00:04) haZe написал(а):
Афигеть!
Круто, респект!
Очень интересно узнать логику работы такого приложения.

Спустя 1 минута, 52 секунды (13.11.2009 - 00:06) Gabriel написал(а):
sergeiss
вот почемуто посмотрев на твой график мне в голову пришла именно эта идея smile.gif интересно будет посмотреть на эдакий график (и не только на картинке)

Спустя 19 минут, 14 секунд (13.11.2009 - 00:26) kirik написал(а):
Цитата (sergeiss @ 12.11.2009 - 14:46)
Эдак лучше уж создать набор параллелепипедов (отдельных объектов-картинок), задать их "слоистость", т.е. что на заднем плане, что на переднем. Задать каждому объекту свою подсказку... Всё это передать в JS

Не сказал бы что лучше, если только как вариант smile.gif

Спустя 21 минута, 15 секунд (13.11.2009 - 00:47) sergeiss написал(а):
Вы не поверите... Но я, вместо того, чтобы спать, сидел за компом и уже придумал алгоритм динамического верчения картинки. Реализация на ПХП, но работать будет "как часы":) Просто в моем алгоритме уже изначально многое я сделал для автоподстройки под размеры. И теперь достаточно только менять несколько параметров, и картинка будет вращаться.

"Завтра" (т.е. уже сегодня, в пятницу 13-го), сделаю эту фигню. И покажу результат ее работы. Каждый желающий сможет "поФФтыкать" в кнопки.

А вариант с JS "фтопку" smile.gif Или, в крайнем случае, на дальнюю полку.


Спустя 7 минут, 6 секунд (13.11.2009 - 00:54) Grazor написал(а):
sergeiss
biggrin.gif насоветовали, что теперь ночами не спишь

PS. очень интересно посмотреть на то, что получится wink.gif

Спустя 43 минуты, 18 секунд (13.11.2009 - 01:37) MainVoid написал(а):
во даете...
Присоединяюсь к желающим тыкать кнопки.

Спустя 3 часа, 35 минут, 22 секунды (13.11.2009 - 05:13) twin написал(а):
Цитата
Чтобы флэш мог "покрутить" картинку, надо передать несколько картинок этому флэшу. В разных проекциях.

Во флэш кстати сделать это можно в тыщу раз нагляднее и эффектнее. Я к тому, что ты немного не так представляешь себе алгоритм решения этой задачи посредством flash.
Дело в том, что ему не нужно передавать никаких картинок, он сам умеет получать и обрабатывать данные. А нарисованный график на флэшке - тут php рядом не валялся. smile.gif

Но сама задача конечно решена красиво, тут вопросов нету. Круто.

Спустя 3 часа, 29 минут, 59 секунд (13.11.2009 - 08:43) sergeiss написал(а):
Цитата (twin @ 13.11.2009 - 06:13)
Дело в том, что ему не нужно передавать никаких картинок, он сам умеет получать и обрабатывать данные. А нарисованный график на флэшке - тут php рядом не валялся.

Тогда "ткни ссылкой" в какое-нибудь нормальное описалово того, что и как можно сделать smile.gif

Я тут полазил по и-нету, в Википедии про флэш пишут, что могут быть реальные проблемы совместимости. Что меня немного останавливает от того, чтобы реально "погрузиться" во флэш.

Спустя 40 минут, 42 секунды (13.11.2009 - 09:23) twin написал(а):
Ткнуть не могу, я по бумаге учился. Но вообще во flash приложениях есть такая штука как actionscript - очень мощный язык программирования. Кроме того классно организована мультипликация. И флэш-проигрыватель может самостоятельно (наподобие аякса) обращаться к серверу. Не говоря уже о том, что данные для обработки можно передать прямо при загрузке страницы.

Вот в совокупности и делай выводы. Если есть выбор между флэш и PHP при решении такой задачи, то это так же, как выбор между фотошопом и паинтом))

Спустя 1 час, 55 минут, 57 секунд (13.11.2009 - 11:19) Michael написал(а):
flash и actionscript конечно интересные вещи, но разбираться там наверное поболее чем в php надо.

Спустя 3 месяца, 9 дней, 9 часов, 2 минуты, 49 секунд (22.02.2010 - 20:22) qpayct написал(а):
Цитата (kirik @ 12.11.2009 - 18:14)
координаты по 3м осям - это добавит удобства в использовании smile.gif

было бы очень прикольно, разбираясь с GD я пока так понял, что функциии php - псевдо 3D, а реально в них 2 оси ( x и y ) я прав? где то на американских сайтах помню видел 3D обьекты по принципу, как в OPENGL на C++
насчёт графов вот тут ещё есть парочку статеек, как это всё делается:
http://www.codenet.ru/webmast/php/gd/3D-Pie.php
http://www.codenet.ru/webmast/php/gd/Bars.php
http://www.codenet.ru/webmast/php/gd/Graphics.php

а вот тут есть библиотека для работы с 3D - Image_3D и ещё нашел 3Dlib. кто нибудь сталкивался?


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

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

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

user posted image
Быстрый ответ:

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