Построение графиков.

Ответить
evgen_dndz
Сообщения: 11
Зарегистрирован: 28 окт 2014, 14:43

Построение графиков.

Сообщение evgen_dndz » 31 янв 2015, 10:14

Всем привет. Подскажите пожалуйста как можно сделать вот такую вещь?
Интересует в частности как сделать линию графика переменным градиентом? Инфы в сети не смог найти. Буду рад за совет или ссылку.
Вложения
pic.jpg
pic.jpg (20.81 КБ) 3756 просмотров

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: Построение графиков.

Сообщение alexmx » 11 фев 2015, 18:14

Если не ошибаюсь копать нужно в сторону шейдеров

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Построение графиков.

Сообщение klblk » 12 фев 2015, 08:12

Ну как я понимаю цвет точки зависит от значения в этой точке. Минимальное значение красным (255, 0, 0), максимальное зеленым (0, 255, 0). Среднее желтое (255, 255, 0). Промежуточные значения ниже среднего (255, 255->0, 0), выше среднего (255->0, 255, 0). ну в скобочках указано RGB (R, G, B).

А вот как вы будете рисовать график этого я уже не знаю. Я бы поискал готовую библиотеку.

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: Построение графиков.

Сообщение GRAF_COLLIOSTRO » 06 мар 2015, 12:03

эммм... вообще такое можно самому без проблем реализовать. берём и рисуем:
получаем размеры поля, где будем рисовать
берём массив значений - это вертикальные координаты и горизонтальная координата - номер итерации.
цвет градуируем по значению. судя по картинке красный снизу ближе к нулю.... значит нужно делать что-то типа "255 красного минус текущее значение". Отслеживаем чтобы значение было не более 255. А чтобы не вылететь за пределы 255 в общем виде для таких графиков, лучше предварительно преобразовать массив значений по схеме 255 это 100%. и дальше обычная математическая пропорция: ищем максимальное значение в массиве - это 100%. все остальные подгоняются пропорционально с отбрасыванием дробной части.

В общем виде для движения вправо лучше тоже выполнить преобразование к количесву задействованых пикселей в длину. например, вы получаете ширину графика 150 пикселей. а значений в вашем массиве 200. делим тупо 200/150=1,33. получается нас будет интересовать каждое 1,33 значение и, соответсвенно, при итерации используем шаг 1,33 округляя его по правилам округления до целого. в итоге будут задействованы 1,3,4,5,7 и так далее элементы массива. (график будет не очень точным но красивым).
если значений меньше чем в отрисовке, можно по обратному пути растянуть график под нужный размер. например, ширина графика те же 150 пикселей. а значений 50. - невооружённым глазом видно пропорцию. нам нужно получить 150 значений из имеющихся 50. рисуйте вашу линию с шагом 3.

как вариант можно заполнять битмап прямыми вертикальными линиями с началом в точке 0, а второй конец привязывать к значению...

ну а как нарисовать линию с заданным цветом смотрим в уроках. было бы желание)

Самописный вывод графика даст вам безграничные возможности по его дизайну и варианту исполнения. Я бы не стал искать специализированный компонент. задачка школьная по сути.

Ответить