purebasic.info

PureBasic forum
Текущее время: Вт окт 23, 2018 5:09 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Графики
СообщениеДобавлено: Вс апр 14, 2013 9:04 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Написал код для построения графиков. Пока что сырой, есть, что ещё можно прикрутить, но, может, кому нибудь понадобится:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#DiagramGadget_Border = #PB_Canvas_Border
 
Procedure DiagramGadget(Gadget, x, y, Width, Height, DiagramStep, List Values.d(), Color = 0, ColorPoints = 0, Flags = 0)
  Protected NewList Values2.d()
 
  ForEach Values()
    AddElement(Values2())
    Values2() = Values()
  Next
 
  SortList(Values2(),#PB_Sort_Descending) ;Сортируем список значений в обратном порядке
  FirstElement(Values2())
  max.d = Values2() ;Получаем максимальное значение
 
  FreeList(Values2())
 
  coof.d = Height/max ;Получаем коофицент
  GadgetID = CanvasGadget(Gadget, x, y, Width, Height, Flags)
 
  x = 0
  y = Height
 
  If Gadget <> #PB_Any
    out.l = CanvasOutput(Gadget)
  Else
    out.l = CanvasOutput(GadgetID)
  EndIf
 
  If StartDrawing(out)
    ForEach Values()
      x2 = x + DiagramStep
      y2 = Height - Round(Values() * coof,#PB_Round_Nearest)
      LineXY(x,y,x2,y2,Color)
      x = x2
      y = y2
      Circle(x,y,2,ColorPoints)
    Next
    StopDrawing()
  EndIf
EndProcedure
 
NewList a.d()
AddElement(a())
a() = 1
AddElement(a())
a() = 8
AddElement(a())
a() = 4
AddElement(a())
a() = 6
AddElement(a())
a() = 9
AddElement(a())
a() = 3
AddElement(a())
a() = 8
AddElement(a())
a() = 32
AddElement(a())
a() = 64
AddElement(a())
a() = 168
AddElement(a())
a() = 56
 
If OpenWindow(0,5,5,400,300,"График",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  DiagramGadget(0,5,5,390,290,15,a(),$ff0000,$ff0000,#DiagramGadget_Border)
  Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf



DiagramGadget(Gadget, x, y, Width, Height, DiagramStep, Values() [,Color [, ColorPoints [, Flags]]])

Gadget - всё понятно, номер гаджета или #PB_Any
x,y,Width,Height - координаты и размеры гаджета
DiagramStep - размер шага по горизонтали (в пикселях)
Values() - список со значениями для построения графика. Список желательно должен быть типа Double
Color - цвет линий графика. Необязательно.
ColorPoints - цвет кружков в узлах графика. Необязательно.
Flags - может принимать единственное значение - #DiagramGadget_Border. Необязательно.

Планируется ещё добавить сетку, показ чисел при наведении на узел, координаты и несколько графиков на одном. Хочется что-то вроде такого:
ИзображениеРаботы много, но справлюсь :D

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 10:00 am 
Не в сети
студент
Аватар пользователя

Зарегистрирован: Вс апр 20, 2014 9:58 am
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Нужная вещь - а то коды в инете везде перенаворотили, еще бы получение данных по наведению мыши...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 11:03 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Ещё диаграмма

Изображение


Вложения:
Диаграмма.zip [3.06 KiB]
Скачиваний: 187

_________________
read-only
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 11:06 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 27, 2012 7:12 pm
Сообщений: 880
Откуда: Кустанай
Благодарил (а): 27 раз.
Поблагодарили: 13 раз.
Пункты репутации: 7
Никита, где ты был пол года назад?
Я на форекс подсел, мне как раз надо было, но я сам писал, кстати у меня получилось, но был такой кривой код.
В моём случае была необходима прокрутка истории котировок, вперед, назад.
Вот тебе и дополнительный флаг.

#DiagramGadget_scroll = прокрутка
#DiagramGadget_cut - урезание, без прокрутки, в принцыпе можно и не делать
#DiagramGadget_compression - впихивание всего листа в рамку канваса

_________________
Детям нельзя в интернет. От детей интернет тупеет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 11:15 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вт сен 11, 2012 11:48 am
Сообщений: 35
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
kvitaliy писал(а):
Ещё диаграмма

Нифига себе, Фдиска возвели на шестое место.
Я в шоке от такого кода графика.
Это какая функция Пурика могла меня засадить на такие высоты?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 11:23 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Cuprum писал(а):
kvitaliy писал(а):
Ещё диаграмма


Это какая функция Пурика могла меня засадить на такие высоты?

Это официальная статистика форума
memberlist.php?mode=&sk=d&sd=d

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 4:51 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2286
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Цитата:
Ещё диаграмма

Мне кажется, что на "линейке" (справа внизу) должно быть 9417 (Петр), а не 9450.

PS:
Я графиками не особо интересовался, но часто видел подобные:
Изображение
Это я к тому, что наверняка есть какой-то инструмент, который берёт дату и рисует график. Может кто подскажет?

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 6:05 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Покури эту тему, может чем поможет
viewtopic.php?f=5&t=1651

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 6:31 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
m0t0d0r писал(а):
Никита, где ты был пол года назад?
6 дней назад этой теме исполнился год :D

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 7:06 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 27, 2012 7:12 pm
Сообщений: 880
Откуда: Кустанай
Благодарил (а): 27 раз.
Поблагодарили: 13 раз.
Пункты репутации: 7
Никита Однороб писал(а):
m0t0d0r писал(а):
Никита, где ты был пол года назад?
6 дней назад этой теме исполнился год :D

Мой косяк, только заметил её :D

_________________
Детям нельзя в интернет. От детей интернет тупеет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 7:35 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт фев 26, 2009 1:53 am
Сообщений: 1154
Откуда: Беларусь, Витебск
Благодарил (а): 22 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Фантомас, вообще, для визуализации есть замечательный пакет ggplot2. Вроде как к Си его прикручивают, что с Пуриком не скажу.

_________________
Ubuntu 10.10, PureBasic 4.61 x86
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Графики
СообщениеДобавлено: Вс апр 20, 2014 7:57 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2286
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
pablov писал(а):
Покури эту тему, может чем поможет
viewtopic.php?f=5&t=1651

Оказалось, что это RRDtool (моя картинка). Для винды только старые версии, и вообще, что бы его осилить, понадобится прочитать тонны документаций, спасибо, забил :D.

Angelian писал(а):
Фантомас, вообще, для визуализации есть замечательный пакет ggplot2. Вроде как к Си его прикручивают, что с Пуриком не скажу.

Надо будет глянуть позже, но походу это сложнее, чем RRDtool (не только на графиках специализируется).

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB