Вверх ↑
Этот топик читают: Гость
Ответов: 495
Рейтинг: 163
#1: 2020-07-15 23:51:44 ЛС | профиль | цитата
Всем привет, застрял вроде но ровном месте . Вопрос по hiPlotHistogram, как в приведённом примере построить график чтоб полоски (столбцы) не накрывали и не перекрывали друг друга, а стыковались с друг другом?
пример

Add(MainForm,2953706,70,175)
{
Width=1024
Height=276
link(onCreate,14190678:doFor,[])
}
Add(PlotHistogram,15462962,273,189)
{
Grapher="rrr"
Color=8388608
Step=1
BgColor=15780518
link(ValueX,12331086:Value,[])
}
Add(Memory,12331086,280,133)
{
Default=Integer(1)
}
Add(Random,5327197,210,189)
{
Min=50
link(onRandom,15462962:doAdd,[])
}
Add(For,14190678,140,189)
{
End=100
link(onEvent,5327197:doRandom,[])
}
Add(Plotter,6732534,210,119)
{
Left=5
Top=15
Width=995
Height=210
Color=16777215
Name="rrr"
MinH=-30
MaxH=100
MouseControl=1
Point(MinX)
Point(MaxX)
}


Редактировалось 1 раз(а), последний 2020-07-15 23:52:17
карма: 4

0
Ответов: 19
Рейтинг: 21
#2: 2020-07-16 08:24:27 ЛС | профиль | цитата
так?

Add(MainForm,1944857,35,91)
{
Width=1024
Height=276
link(onCreate,14190678:doFor,[(74,111)(74,97)])
}
Add(PlotHistogram,15462962,210,91)
{
Grapher="rrr"
Color=8388608
Step=2
MaxValues=100
BgColor=15780518
link(ValueX,12331086:Value,[])
}
Add(Memory,12331086,217,42)
{
Default=Integer(2)
}
Add(Random,5327197,147,91)
{
Min=50
link(onRandom,15462962:doAdd,[])
}
Add(For,14190678,91,91)
{
End=100
link(onEvent,5327197:doRandom,[])
}
Add(Plotter,6732534,147,42)
{
Width=1008
Height=238
Align=5
Color=16777215
Name="rrr"
MaxH=100
MouseControl=1
Point(MinX)
Point(MaxX)
}

карма: 1

0
Ответов: 1926
Рейтинг: 172
#3: 2020-07-16 08:28:22 ЛС | профиль | цитата
tig-rrr, Step=2.
Каждый столбец занимает два значения по X: по одному справа и слева от истинного. Например, при X=0 столбец будет простираться то -1 до 1 по абсциссе. От этого и надо отталкиваться.

карма: 9
0
Ответов: 495
Рейтинг: 163
#4: 2020-07-16 12:55:10 ЛС | профиль | цитата
Flapiotun писал(а):
так?
Визуально так (именно как надо), но так он занимает в 2 раза больше значений! вместо 100 стало 200. и вся логика отображения и подписей графика теряется..
3042 писал(а):
От этого и надо отталкиваться.
это я понимаю, но как получить вид как в примере от Flapiotun только с правильными подписями графика? Ведь нет возможности выбрать прирост то -0.5 до 0.5 по абсциссе или от 0 до 1 (вроде так логичнее)?
Если в коде изменить эту строку без вычитания по оси x
_x1 := Parent._prop_LeftMargin + Round(VSpace*(x - startX)/FX);
то работает так как я и хотел , но это противоречит моему пониманию концепции Hiasm хоть чего-то менять в исходниках.

Редактировалось 3 раз(а), последний 2020-07-16 13:13:26
карма: 4

0
Ответов: 8926
Рейтинг: 823
#5: 2020-07-16 15:08:42 ЛС | профиль | цитата
tig-rrr, чтобы сохранить логику


Add(MainForm,3886781,140,119)
{
Width=1024
Height=276
}
Add(PlotHistogram,15462962,413,126)
{
Grapher="rrr"
Color=8388608
Size=4
MaxValues=100
BgColor=15780518
link(ValueX,16525724:Result,[(426,117)(398,117)(398,171)(307,171)])
}
Add(Random,5327197,350,126)
{
Min=50
link(onRandom,15462962:doAdd,[])
}
Add(Plotter,6732534,476,126)
{
Left=5
Top=15
Width=995
Height=210
Color=16777215
Name="rrr"
MinH=-30
MaxH=100
MouseControl=1
Point(MinX)
Point(MaxX)
}
Add(Math,16525724,301,126)
{
OpType=2
Op2=10
ResultType=0
link(onResult,5327197:doRandom,[])
}
Add(Counter,14329883,252,126)
{
Max=9999999
link(onNext,16525724:doOperation,[])
}
Add(Timer,13158727,203,126)
{
Interval=30
link(onTimer,14329883:doNext,[])
}

карма: 19

0
Ответов: 495
Рейтинг: 163
#6: 2020-07-16 15:47:10 ЛС | профиль | цитата
Леонид писал(а):
чтобы сохранить логику

Леонид, логика приблизительно сохранена, (значения на графике увеличены в 10 раз). В программе где намереваюсь использовать этот график, жёсткая привязка каждого значения графика к таблице, которая динамическая и может быть от 50 до 5000 значений. И с двусторонней " переадресацией " кликнул на таблицу попал в график в нужное место (маркер отобразил...) кликнул на график, попал в таблицу в нужную ячейку, + на этот график накладываются другие графики линейные, точечные. И подпись графика должна соответствовать как в (точечном ,линейном). Возможно нужно доработать элемент добавив пункт от 0+1 а не только -1 0 +1. Или может кто поможет переделать этот элемент в inlineCode сам 100% не осилю...
Набросок в котором изменён код элемента (0+1)
Тотже участок с оригинальным кодом (-1 0 +1)

Редактировалось 3 раз(а), последний 2020-07-16 16:10:54
карма: 4

0
Ответов: 8926
Рейтинг: 823
#7: 2020-07-16 17:21:16 ЛС | профиль | цитата
tig-rrr,
А так, и без изменения


Add(MainForm,3886781,105,105)
{
Width=1024
Height=488
link(onCreate,5425321:doWork1,[])
}
Add(PlotHistogram,15462962,399,140)
{
Grapher="rrr"
Color=8388608
MaxValues=300
BgColor=15780518
link(ValueX,5546003:Result,[(412,131)(293,131)(293,292)(223,292)])
}
Add(Plotter,6732534,462,140)
{
Left=5
Top=15
Width=600
Height=210
Color=16777215
Name="rrr"
MinH=0.001
MaxH=100
RightMargin=10
TopMargin=5
BottomMargin=0
MouseControl=1
Point(MinX)
Point(MaxX)
}
Add(Plotter,2124753,462,245)
{
Left=5
Top=225
Width=600
Height=210
Name="sss"
MinH=-100
MaxH=0.001
RightMargin=10
TopMargin=0
}
Add(PlotLines,15528173,399,189)
{
Grapher="sss"
MaxValues=101
link(ValueX,15528864:Var1,[(412,180)])
}
Add(PlotLines,1067593,399,238)
{
Grapher="sss"
Color=16711680
MaxValues=101
link(ValueX,3879264:Var1,[(412,229)])
}
Add(PlotPoints,137277,399,287)
{
Grapher="sss"
Color=32768
MaxValues=101
link(ValueX,3879264:Var2,[(412,278)(447,278)])
}
Add(StringTable,15661489,238,147)
{
Left=610
Top=5
Width=395
Height=440
Columns=#8:Index=70|8:Chatr=70|7:Line=70|7:Dots=70|9:Points=70|0:|0:|
Grid=0
Point(Strings)
Point(doSelect)
link(onClick,6285230:doEvent1,[])
}
Add(MultiStrData,10018421,301,217)
{
Count=5
link(onPart1,6248974:doValue,[(340,223)(340,104)])
link(onPart2,15462962:doAdd,[(347,230)(347,146)])
link(onPart3,15528173:doAdd,[(354,237)(354,195)])
link(onPart4,1067593:doAdd,[])
link(onPart5,137277:doAdd,[(361,251)(361,293)])
}
Add(Memory,6248974,441,98)
{
}
Add(GetDataEx,15528864,441,175)
{
link(Data,6248974:Value,[])
}
Add(GetDataEx,3879264,441,224)
{
link(Data,15528864:Var2,[])
}
Add(For,8334227,133,252)
{
link(onEvent,5081082:doEvent1,[])
link(Start,15641524:Var2,[])
link(End,8139036:Result,[])
}
Add(ArrayRW,15907284,252,217)
{
link(onRead,10018421:doSplit,[])
link(Array,15661489:Strings,[])
}
Add(Math,4319600,98,189)
{
OpType=1
Op2=50
ResultType=0
link(onResult,8139036:doOperation,[])
}
Add(Math,8139036,140,189)
{
Op2=100
ResultType=0
link(onResult,8334227:doFor,[(179,195)(179,237)(123,237)(123,258)])
}
Add(Hub,6285230,301,147)
{
OutCount=5
link(onEvent1,15462962:doClear,[])
link(onEvent2,15528173:doClear,[(382,160)(382,202)])
link(onEvent3,1067593:doClear,[(375,167)(375,251)])
link(onEvent4,137277:doClear,[(368,174)(368,300)])
link(onEvent5,4319600:doOperation,[(326,181)(326,209)(228,209)(228,181)(88,181)(88,195)])
}
Add(Hub,5081082,182,252)
{
link(onEvent1,5546003:doCalc,[])
link(onEvent2,15907284:doRead,[(207,265)(207,223)])
}
Add(MathParse,5546003,217,252)
{
MathStr="(%2 - %1)*3"
link(X1,15641524:Var3,[(223,229)])
}
Add(GetDataEx,15641524,133,224)
{
Angle=3
link(Data,4319600:Result,[(104,229)])
}
Add(MultiElement,5425321,175,119)
{
link(onEvent1,15661489:doAdd,[(228,125)(228,153)])
}
BEGIN_SDK
Add(EditMulti,10386348,21,21)
{
EventCount=1
WorkCount=1
Width=328
link(doWork1,14224205:doRandomize,[(123,27)(123,55)])
}
Add(Random,14224205,133,42)
{
Min=50
Mode=1
link(onRandom,3121393:doRandom,[])
}
Add(Timer,16576773,42,42)
{
Interval=50
AutoStop=1
link(onTimer,751665:doFor,[])
}
Add(For,751665,84,42)
{
End=2999
link(onEvent,14224205:doRandom,[])
}
Add(Random,3121393,175,42)
{
Min=-10
Max=-90
Mode=1
link(onRandom,13866280:doRandom,[])
}
Add(Random,13866280,224,42)
{
Min=-15
Max=-80
Mode=1
link(onRandom,3077244:doRandom,[])
}
Add(Random,3077244,273,42)
{
Min=-20
Max=-60
Mode=1
link(onRandom,6874229:doString,[(317,48)(317,101)(151,101)(151,118)])
}
Add(FormatStr,6874229,161,112)
{
DataCount=5
Mask="%1;%2;%3;%4;%5"
link(onFString,10386348:onEvent1,[(326,118)(326,27)])
link(Str1,751665:Position,[(167,91)(90,91)])
link(Str2,14224205:Random,[(174,83)(139,83)])
link(Str3,3121393:Random,[])
link(Str4,13866280:Random,[(188,82)(230,82)])
link(Str5,3077244:Random,[(195,68)(279,68)])
}
END_SDK

карма: 19

0
Ответов: 495
Рейтинг: 163
#8: 2020-07-16 17:40:22 ЛС | профиль | цитата
Леонид писал(а):
А так, и без изменения

Леонид, спасибо, как вариант, правда городить костылей уйму придется т.к значения и отрицательные и положительные и графики менятся могут с + на - (через 0 проходить) + в программе масштаб графика организован и перемещение по нему (управление с помощью мыши ) в таком варианте вообще даже и не предположу как быть .... В моём случае если вариантов больше не найдется проще удалить 5 символов (-Size) из оригинального кода и будет всё как хочу...
карма: 4

0
Ответов: 2058
Рейтинг: 28
#9: 2020-07-17 20:02:42 ЛС | профиль | цитата
tig-rrr писал(а):
В моём случае если вариантов больше не найдется проще удалить 5 символов (-Size) из оригинального кода и будет всё как хочу...

Создай новый компонент с названием hiPlotHistogramEx и с новыми изменениями, а старый оставь, что бы если попадется схема со старым компонентом была совместимость.
карма: 1

0
9
Сообщение
...
Прикрепленные файлы
(файлы не залиты)