Вверх ↑
Этот топик читают: Гость
Ответов: 67
Рейтинг: 1
#1: 2021-07-22 14:56:08 ЛС | профиль | цитата
Всем доброго времени,

Вопросов несколько:

1)Как сделать растягивание графика по оси X колесиком мышки, не изменяя величину деления в оси Y.

2)Как сделать так, что-бы при пересечение двух графиков, последний график накладывался на предыдущий. ( в примере видно что зеленые точки всегда рисуются поверх красных независимо от времени построения этого графика. )

Add(MainForm,16184661,497,49)
{
Left=20
Top=105
Width=1260
Height=722
Caption="Mouse plotter"
}
Add(Plotter,3809982,1211,210)
{
Top=168
Width=1244
Height=515
Align=4
Cursor=7
Name="g1"
ModeSp=2
MinOwn=1
MinRest=10
GridX=60
LeftMargin=100
RightMargin=40
TopMargin=0
BottomMargin=20
Point(doMinH)
Point(doMaxH)
Point(doMinW)
Point(doMaxW)
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
Point(onMouseEnter)
Point(onMouseDown)
Point(onSplitUp)
Point(onMouseUp)
Point(onMouseWheel)
link(onMouseWheel,3015880:doEvent1,[])
}
Add(PlotPoints,13221991,434,511)
{
Grapher="g1"
Size=4
MaxValues=200000
Name="test"
Shape=1
Point(doColor)
link(ValueY,5366700:Var3,[(440,453)(384,453)(384,464)])
link(ValueX,9979559:Var1,[(447,485)])
}
Add(PlotLines,5768736,364,315)
{
Grapher="g1"
Color=-16777198
link(ValueY,5366700:Var1,[(370,303)(356,303)])
link(ValueX,7210831:Result,[(377,289)(391,289)])
}
Add(MathParse,7210831,385,231)
{
MathStr="100 + %2"
link(onResult,13994250:doEvent1,[])
link(X2,13057663:GetData,[])
}
Add(EventFromData,13057663,392,161)
{
}
Add(Hub,13994250,434,231)
{
OutCount=4
link(onEvent1,13057663:doData,[(472,237)(472,147)(369,147)(369,167)])
link(onEvent2,7484754:doEvent1,[])
}
Add(DoData,16400222,280,231)
{
Data=Integer(100)
link(onEventData,12771386:doEvent1,[])
}
Add(Hub,12771386,322,231)
{
link(onEvent1,7210831:doCalc,[])
link(onEvent2,5768736:doAdd,[(343,244)(343,321)])
}
Add(Timer,13280309,203,231)
{
link(onTimer,16400222:doData,[])
}
Add(Random,13405581,280,399)
{
Min=2900
Max=3200
link(onRandom,15563774:doEvent1,[])
}
Add(PlotPoints,16683084,462,672)
{
Grapher="g1"
Color=32768
Size=4
MaxValues=200000
Name="test"
Shape=1
Point(doColor)
link(ValueY,5832022:Random,[(468,628)(426,628)])
link(ValueX,9979559:Var2,[(475,580)(503,580)])
}
Add(Timer,1587097,168,490)
{
Interval=100
link(onTimer,9933845:doEvent1,[])
}
Add(Hub,9933845,238,490)
{
OutCount=6
link(onEvent1,14137486:doData,[])
link(onEvent2,13405581:doRandom,[(266,503)(266,405)])
link(onEvent3,5832022:doRandom,[(280,510)(280,587)])
link(onEvent4,13221991:doAdd,[])
link(onEvent5,16683084:doAdd,[(357,524)(357,678)])
}
Add(GetDataEx,5366700,350,459)
{
Angle=3
link(Data,13405581:Random,[(286,464)])
}
Add(MathParse,6429216,679,490)
{
MathStr="10 + %2"
link(onResult,224861:doEvent1,[])
link(X2,7135719:GetData,[])
}
Add(EventFromData,7135719,686,427)
{
}
Add(Hub,224861,728,490)
{
OutCount=4
link(onEvent1,7135719:doData,[(754,496)(754,472)(673,472)(673,433)])
}
Add(DoData,14137486,574,490)
{
Data=Integer(100)
link(onEventData,11564792:doEvent1,[])
}
Add(Hub,11564792,616,490)
{
link(onEvent1,6429216:doCalc,[])
}
Add(Random,5832022,420,581)
{
Min=2900
Max=3200
}
Add(MathParse,16300842,1078,651)
{
MathStr=" %1 + (%1 * %2)"
link(onResult,3809982:doMaxH,[(1195,657)(1195,230)])
link(X1,13117179:Value,[])
link(X2,8045542:Var2,[(1091,567)(1112,567)])
}
Add(MathParse,4578141,1134,532)
{
MathStr="%1 - (%1 * %2)"
link(onResult,3809982:doMinH,[(1188,538)(1188,223)])
link(X1,4914341:Value,[])
link(X2,8045542:Var3,[(1147,460)])
}
Add(LineBreak,6643228,714,665)
{
Type=1
link(Data,4438146:Item,[])
Primary=[13269833,392,-294]
}
Add(GetDataEx,8045542,1106,455)
{
link(Data,13269833:Var,[])
}
Add(DoData,7641006,1029,532)
{
link(onEventData,4578141:doCalc,[])
}
Add(DoData,2948628,1015,651)
{
link(onEventData,16300842:doCalc,[])
}
Add(Hub,1544216,945,609)
{
InCount=3
link(onEvent1,7641006:doData,[(977,615)(977,538)])
link(onEvent2,2948628:doData,[(973,622)(973,657)])
}
Add(Memory,13117179,1078,574)
{
}
Add(StrList,2144302,700,525)
{
Strings=#4:0.05|4:0.06|5:0.065|4:0.07|5:0.075|4:0.08|5:0.085|4:0.09|5:0.095|3:0.1|3:1.1|3:1.1|3:1.2|3:1.3|3:1.4|3:1.5|3:1.6|3:1.7|3:1.8|3:1.9|1:2|3:2.1|3:2.2|3:2.3|0:|
}
Add(ArrayRW,4438146,714,609)
{
link(onRead,12561458:doEvent1,[])
link(Array,2144302:Array,[])
}
Add(ScrollBar,13605258,637,609)
{
Left=1215
Top=165
Width=15
Height=510
Max=28
Kind=1
link(onPosition,4438146:doRead,[])
}
Add(Label,7777130,833,623)
{
Left=1205
Top=145
Width=30
Caption="Скрол"
}
Add(Hub,12561458,763,609)
{
link(onEvent1,1544216:doEvent1,[])
link(onEvent2,7777130:doText,[(812,622)(812,629)])
}
Add(Hub,12092684,987,406)
{
OutCount=3
link(onEvent1,4914341:doValue,[])
link(onEvent2,13117179:doValue,[(1067,419)(1067,580)])
}
Add(Memory,4914341,1134,406)
{
}
Add(GetDataEx,9979559,497,480)
{
Angle=1
link(Data,6429216:Result,[(566,485)(566,534)(685,534)])
}
Add(IndexToChanel,9236031,805,357)
{
Count=4
Point(Index)
link(onEvent2,12668247:doData,[(845,370)(845,363)])
link(Index,1982659:Count,[(811,345)(629,345)])
link(onEvent3,11108890:doData,[(845,377)(845,412)])
}
Add(CounterEx,1982659,623,301)
{
Max=10
Point(onThroughMax)
Point(Max)
Point(doValue)
link(onThroughMax,1713101:doData,[(678,314)(678,367)(541,367)(541,314)])
}
Add(Hub,15563774,322,399)
{
OutCount=3
link(onEvent1,1982659:doNext,[(375,405)(375,307)])
link(onEvent2,9236031:doEvent,[(726,412)(726,363)])
}
Add(EventFromData,12668247,854,357)
{
}
Add(DoData,11108890,854,406)
{
link(onEventData,12092684:doEvent1,[])
link(Data,12668247:GetData,[])
}
Add(DoData,1713101,553,308)
{
Data=Integer(5)
link(onEventData,1982659:doValue,[])
}
Add(Edit,8404691,1484,441)
{
Left=115
Top=45
}
Add(LineBreak,2379188,840,679)
{
Caption="MousWhel"
link(Out,1544216:doEvent2,[(925,685)(925,622)])
Primary=[629306,532,-434]
}
Add(Hub,3015880,1253,245)
{
link(onEvent1,629306:In,[])
link(onEvent2,15095304:In,[])
}
Add(Hub,7484754,1008,238)
{
link(onEvent1,14132836:doEvent1,[])
link(onEvent2,5908964:doData,[(1032,251)(1032,258)])
}
Add(EventFromData,5908964,1043,252)
{
}
Add(Hub,14132836,1134,238)
{
InCount=2
OutCount=1
link(onEvent1,3809982:doMaxW,[])
}
Add(DoData,14692629,1043,301)
{
link(onEventData,14132836:doEvent2,[(1105,307)(1105,251)])
link(Data,5908964:GetData,[])
}
Add(Hub,8677804,994,301)
{
InCount=2
link(onEvent1,14692629:doData,[])
}
Add(LineBreak,2401785,875,301)
{
Caption="MousWhel"
link(Out,8677804:doEvent1,[])
Primary=[15095304,427,-49]
}



Редактировалось 3 раз(а), последний 2021-07-22 17:31:56
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 67
Рейтинг: 1
#2: 2021-07-22 16:03:22 ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-07-22 17:30:02
карма: 1

0
Ответов: 698
Рейтинг: 143
#3: 2021-07-22 21:47:52 ЛС | профиль | цитата
Pavel, в твоей схеме много лишнего. Немного сократил.
Add(MainForm,16184661,63,-28)
{
Left=20
Top=105
Width=1260
Height=722
Caption="Mouse plotter"
}
Add(Plotter,3809982,63,49)
{
Top=168
Width=1244
Height=515
Align=5
Cursor=7
Name="g1"
ModeSp=2
MinOwn=1
MinRest=10
GridX=60
LeftMargin=100
RightMargin=40
TopMargin=0
BottomMargin=20
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
Point(onMouseEnter)
Point(onMouseDown)
Point(onSplitUp)
Point(onMouseUp)
Point(onMouseWheel)
}
Add(PlotPoints,13221991,273,161)
{
Grapher="g1"
Size=4
MaxValues=200000
Name="test"
Shape=1
link(ValueX,15433884:Var2,[(286,138)(321,138)])
}
Add(PlotLines,5768736,210,217)
{
Grapher="g1"
Color=-16777198
link(ValueY,13405581:Random,[])
}
Add(Timer,13280309,56,217)
{
link(onTimer,4147529:doOperation,[])
}
Add(Random,13405581,210,161)
{
Min=2900
Max=3200
link(onRandom,13221991:doAdd,[])
}
Add(PlotPoints,16683084,273,98)
{
Grapher="g1"
Color=32768
Size=4
MaxValues=200000
Name="test"
Shape=1
link(ValueX,15433884:Var1,[(286,82)])
}
Add(Timer,1587097,56,147)
{
Interval=100
link(onTimer,9933845:doEvent1,[])
}
Add(Hub,9933845,126,147)
{
OutCount=3
link(onEvent1,6433179:doOperation,[(158,153)(158,27)])
link(onEvent2,5832022:doRandom,[(186,160)(186,104)])
link(onEvent3,13405581:doRandom,[])
}
Add(Random,5832022,203,98)
{
Min=2900
Max=3200
link(onRandom,16683084:doAdd,[])
}
Add(Math,4147529,154,217)
{
Op2=100
link(onResult,5768736:doAdd,[])
link(Op1,4147529:Result,[(160,208)(146,208)(146,257)(160,257)])
}
Add(Math,6433179,315,21)
{
Op2=10
link(Op1,10094971:Var1,[(321,12)(307,12)(307,61)])
}
Add(GetDataEx,10094971,315,56)
{
link(Data,6433179:Result,[])
}
Add(GetDataEx,15433884,315,77)
{
link(Data,10094971:Var2,[])
}

По поводу точек, ничего не понял. Что конкретно нужно? Если я правильно понимаю, тебе надо видеть графики изменения цен?

Редактировалось 1 раз(а), последний 2021-07-22 21:52:54
карма: 15

0
Ответов: 67
Рейтинг: 1
#4: 2021-07-22 22:34:39 ЛС | профиль | цитата
А попробуй колёсиком мыши покрутить над графиком у меня и у себя, потом скрол бар тот что с права от графика.....
карма: 1

0
Ответов: 8888
Рейтинг: 823
#5: 2021-07-22 22:50:45 ЛС | профиль | цитата
Pavel, здесь чуть доработанный Plotter с возможностью "колёсиком" менять масштаб или по X, или по Y, или по XY вместе. (не забудьте переименовать заменяемые файла добавив "old")
https://forum.hiasm.com/getfile/38802
Чтобы графики не перекрывались, можно использовать несколько графиков и управлять их видимостью или через Front / Back.
карма: 19

0
Ответов: 67
Рейтинг: 1
#6: 2021-07-23 11:39:37 ЛС | профиль | цитата
Леонид,

Не совсем подходит
Леонид писал(а):
https://forum.hiasm.com/getfile/38802
у компонента отсутствуют точки входа как на картинке которые есть у стандартного. ( Для моей бедующей схемы это критично.)
Есть ли возможность вернуть эти точки во модифицированный компонент ?

Стандартный компонент :
321.PNG

Модифицированный компонент :
123.PNG



Не понимаю это как ?
Леонид писал(а):
Чтобы графики не перекрывались, можно использовать несколько графиков и управлять их видимостью или через Front / Back.

Можно пример ?

Редактировалось 1 раз(а), последний 2021-07-23 12:08:44
карма: 1

0
Ответов: 8888
Рейтинг: 823
#7: 2021-07-23 13:11:59 ЛС | профиль | цитата
Pavel
Пример


Add(MainForm,2953706,63,49)
{
Width=503
}
Add(ChildPanel,89727,63,126)
{
link(onEvent1,10599594:doEvent1,[(105,132)(105,55)])
link(onEvent2,9896551:doEvent,[])
}
BEGIN_SDK
Add(EditMulti,2771935,21,21)
{
EventCount=2
}
Add(Panel,14154515,35,105)
{
Width=95
Height=261
Align=1
}
Add(Button,5813389,154,77)
{
Left=10
Top=5
Caption=">>"
link(onClick,16177243:doWork1,[(193,83)(193,132)])
}
Add(Button,6630295,154,133)
{
Left=10
Top=40
Caption="II"
link(onClick,16177243:doWork2,[])
}
Add(RadioButton,16743071,98,35)
{
Left=10
Top=80
Selected=0
Caption="Red"
link(onSelect,7868200:doWork1,[])
}
Add(RadioButton,4735209,98,77)
{
Left=10
Top=100
Caption="Blue"
link(onSelect,7868200:doWork2,[(137,83)(137,48)])
}
Add(RadioButton,11327505,98,119)
{
Left=10
Top=120
Caption="Green"
link(onSelect,7868200:doWork3,[(144,125)(144,55)])
}
Add(ChanelToIndex,16177243,203,126)
{
link(onIndex,2771935:onEvent2,[(242,132)(242,34)])
}
Add(ChanelToIndex,7868200,154,35)
{
Count=3
link(onIndex,2771935:onEvent1,[(193,41)(193,27)])
}
END_SDK
Add(Plotter,14168666,252,77)
{
Left=95
Width=392
Height=261
Align=5
Name="Red"
MinH=-1.1
MaxH=1.1
Point(doVisible)
}
Add(Plotter,11732574,294,84)
{
Left=95
Width=392
Height=261
Align=5
Visible=1
Name="Blue"
MinH=-1.1
MaxH=1.1
Point(doVisible)
}
Add(Plotter,3132756,336,91)
{
Left=95
Width=392
Height=261
Align=5
Visible=1
Name="Green"
MinH=-1.1
MaxH=1.1
Point(doVisible)
}
Add(PlotLines,13528726,371,133)
{
Grapher="Red"
Size=2
Step=1
MaxValues=100
}
Add(PlotLines,10820900,371,175)
{
Grapher="Blue"
Color=16711680
Size=2
Step=1
MaxValues=100
}
Add(PlotLines,15548220,371,217)
{
Grapher="Green"
Color=32768
Size=2
Step=1
MaxValues=100
}
Add(IndexToChanel,3982694,182,84)
{
Count=3
Data=Integer(1)
link(onEvent1,11647205:doWork2,[])
link(onEvent2,16465213:doWork2,[])
link(onEvent3,9600650:doWork2,[])
}
Add(Hub,4097517,196,49)
{
OutCount=3
link(onEvent1,11647205:doWork1,[(242,55)])
link(onEvent2,16465213:doWork1,[(235,62)])
link(onEvent3,9600650:doWork1,[(228,69)])
}
Add(HubEx,11647205,238,84)
{
link(onEvent,14168666:doVisible,[])
}
Add(HubEx,16465213,231,91)
{
link(onEvent,11732574:doVisible,[])
}
Add(HubEx,9600650,224,98)
{
link(onEvent,3132756:doVisible,[])
}
Add(Timer,6647537,182,133)
{
Interval=10
Enable=1
link(onTimer,13441783:doNext,[])
}
Add(IndexToChanel,9896551,140,133)
{
link(onEvent1,6647537:doTimer,[])
link(onEvent2,6647537:doStop,[])
}
Add(Counter,13441783,231,133)
{
Max=359
Step=10
link(onNext,11721601:doEvent1,[])
}
Add(MathParse,11647517,315,133)
{
DataCount=1
MathStr="sin(%1)"
AngleMode=1
link(onResult,13528726:doAdd,[])
}
Add(Hub,11721601,273,133)
{
OutCount=3
link(onEvent1,11647517:doCalc,[])
link(onEvent2,7548582:doCalc,[(305,146)(305,181)])
link(onEvent3,4520804:doCalc,[(298,153)(298,223)])
}
Add(MathParse,7548582,315,175)
{
DataCount=1
MathStr="sin(2*%1)"
AngleMode=1
link(onResult,10820900:doAdd,[])
}
Add(MathParse,4520804,315,217)
{
DataCount=1
MathStr="sin(3*%1)"
AngleMode=1
link(onResult,15548220:doAdd,[])
}
Add(Hub,10599594,112,49)
{
link(onEvent1,3915346:doData,[])
link(onEvent2,3982694:doEvent,[(137,62)(137,90)])
}
Add(DoData,3915346,147,49)
{
Data=Integer(0)
link(onEventData,4097517:doEvent1,[])
}

карма: 19

0
Ответов: 67
Рейтинг: 1
#8: 2021-07-23 13:52:45 ЛС | профиль | цитата
Леонид,

Посмотрите на картинке что я имел веду.
То есть в серии точек графика мне нужно перед отрисовкой каждой точки задать ей свой цвет.
Безымянный.png


Видите как мне нужно , следующая точка ( квадратик ) накладывается по верх предыдущей.

Редактировалось 2 раз(а), последний 2021-07-23 13:55:27
карма: 1

0
Ответов: 698
Рейтинг: 143
#9: 2021-07-23 19:39:01 ЛС | профиль | цитата
Pavel писал(а):
А попробуй колёсиком мыши покрутить над графиком у меня и у себя, потом скрол бар тот что с права от графика.

Для того чтобы изменять масштаб графика колёсиком мышки на нём надо щёлкнуть ЛКМ и только потом колёсиком. ScrollBar в твоей схеме подключён неправильно и никак не влияет на что-либо.
Набросал схему вывода цен сделок с крип. валютами реальной биржи и построении графика по одной из них.
Add(MainForm,7714850,42,133)
{
Width=1062
Height=542
Caption="trade"
Point(onClose)
link(onCreate,12356033:doString,[])
link(onClose,2400366:doConsoleTerminate,[])
}
Add(DateConvertor,15786644,406,105)
{
Mode=16
Point(Result)
link(onResult,7728186:doText,[])
}
Add(Replace,3076342,203,147)
{
SubStr="""
link(onReplace,2689203:doSearch,[])
}
Add(Label,7728186,455,105)
{
Width=1046
Height=35
Align=2
Color=-16777215
Font=[Lucida Console,20,0,12632256,204]
Caption=""
AutoSize=1
Alignment=2
}
Add(VisualStrings,2864287,91,56)
{
Lines=#146:wss://stream.binance.com:9443/stream?streams=ethusdt@trade/btcusdt@trade/adausdt@trade/maticusdt@trade/manausdt@trade/sandusdt@trade/vetusdt@trade|
Width=816
}
Add(FormatStr,12356033,91,147)
{
Mask="try{ \r\n Do{\r\n $URL = '%1'\r\n $WS = New-Object System.Net.WebSockets.ClientWebSocket \r\n $CT = New-Object System.Threading.CancellationToken\r\n $WS.Options.UseDefaultCredentials = $true\r\n\r\n $Conn = $WS.ConnectAsync($URL, $CT)\r\n While (!$Conn.IsCompleted) { \r\n Start-Sleep -Milliseconds 100 \r\n }\r\n $buffer = [Net.WebSockets.WebSocket]::CreateClientBuffer(1024,1024)\r\n\r\n While ($WS.State -eq 'Open') { \r\n \r\n $Conn = $WS.ReceiveAsync($buffer, $CT)\r\n While (!$Conn.IsCompleted) { \r\n Start-Sleep -Milliseconds 100 \r\n }\r\n\r\n $jsonResult = [Text.Encoding]::UTF8.GetString($buffer, 0, $Conn.Result.Count)\r\n $jsonResult #| ConvertFrom-Json \r\n\r\n } \r\n } Until ($WS.State -ne 'Open')\r\n\r\n}Finally{\r\n\r\n If ($WS) { \r\n $WS.Dispose()\r\n }\r\n\r\n}"
link(onFString,2400366:doConsoleExec,[])
link(Str1,2864287:Text,[])
}
Add(WinExec,2400366,140,133)
{
FileName="POWERSHELL"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
Point(doConsoleTerminate)
link(onConsoleResult,3076342:doReplace,[])
link(onConsoleTerminate,7714850:doClose,[(179,167)(179,188)(32,188)(32,160)])
}
Add(BlockFind,2689203,252,147)
{
StartBlock="{e:trade"
EndBlock="true}"
link(onSearch,14377089:doMultiBlockFind,[])
}
Add(MultiBlockFind,14377089,308,147)
{
@Hint=#7:Выховы:|11:1. UnixTime|10:2. ETHUSDT|10:3. BTCUSDT|10:4. ADAUSDT|12:5. MATICUSDT|11:6. MANAUSDT|11:7. SANDUSDT|10:8. VETUSDT|0:|
Count=8
TagList="{**s} E: {**x} , {**e}\r\n{**s} s:ETHUSDT {**x} M:true {**n} p: {**x} , {**e}\r\n{**s} s:BTCUSDT {**x} M:true {**n} p: {**x} , {**e}\r\n{**s} s:ADAUSDT {**x} M:true {**n} p: {**x} , {**e}\r\n{**s} s:MATICUSDT {**x} M:true {**n} p: {**x} , {**e}\r\n{**s} s:MANAUSDT {**x} M:true {**n} p: {**x} , {**e}\r\n{**s} s:SANDUSDT {**x} M:true {**n} p: {**x} , {**e}\r\n{**s} s:VETUSDT {**x} M:true {**n} p: {**x} , {**e}"
link(onResult1,2921107:doOperation,[(347,153)(347,111)])
link(onResult3,1283714:doCase,[])
AddHint(-126,86,75,130,@Hint)
}
Add(Math,2921107,357,105)
{
OpType=3
Op2=1000
link(onResult,15786644:doConvert,[])
}
Add(Plotter,3809982,546,140)
{
Top=35
Width=1046
Height=468
Align=5
Color=0
Cursor=7
Name="g1"
ModeSp=2
MinOwn=1
MinRest=10
GridX=0
GridY=0
LeftMargin=100
RightMargin=40
TopMargin=20
BottomMargin=20
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
Point(onMouseEnter)
Point(onMouseDown)
Point(onSplitUp)
Point(onMouseUp)
Point(onMouseWheel)
}
Add(Case,1283714,399,161)
{
link(onNextCase,16683084:doAdd,[])
}
Add(PlotPoints,16683084,455,161)
{
Grapher="g1"
Color=-16777203
Size=2
Step=1
MaxValues=3600
Name="test"
Shape=1
}


Для построения графика по другой валюте просто подключи другой вывод MultiBlockFind.
А по остальным вопросам Леонид дал правильное направление.

Редактировалось 2 раз(а), последний 2021-07-23 22:38:03
карма: 15

0
Ответов: 8888
Рейтинг: 823
#10: 2021-07-24 00:11:07 ЛС | профиль | цитата
Pavel, если данные поступают 20--60 раз/сек, то на HiAsm вполне можно рисовать график на картинке как душе заблагорассудится. Давно пробовал, нашёл у себя на компьютере, несмотря на крах жёсткого диска, имевшего место почти два года назад. В архиве две пробы отдельно SHA и EXE. Обратите внимание на №2, полагаю для вашей цели должен подойти.
https://forum.hiasm.com/getfile/39266
карма: 19

0
Ответов: 67
Рейтинг: 1
#11: 2021-07-24 15:49:15 ЛС | профиль | цитата
Леонид,ваши примеры хороши, рисуя графики на картинке можно с одной стороны упростить много задач по отображеню данных на графике, но вот управление этим графиком и получением данных в точке графика( получения координат точки на графике при изменение масштаба графика ) мне кажется будет не самым простым.
А вот главный минус, это производительность такого решения. ( при значении таймера 10мс, у 6-ти серий графика на одной картинке вот такой результат )
Снимок.PNG
Система

Еще один минус, это после работы этого графика более 24 часов какая получится картинка с графиком ( сколько она будет занимать места на жестком диске,в памяти видеокарты, оперативки, как она будет масштабироваться.... мне кажется она съест много ресурсов и будет тормозить). как мне кажется правильный выход в моей задачи, это как я описал ниже.

Как я вижу решение задач:

Добавить в ваш модифицированный компонент Plotter [url] https://forum.hiasm.com/getfile/38802 [/url] (В этом компоненте добавлена возможность выбора изменения масштаба графика роликом мышки по осям XY,X,Y но убраны точки входа как на скрине) точки входа
Картинка


Добавить в компонент Plotter динамическое изменение параметра " Name ". (также добавить эту возможность во все прилегающие к нему компоненты. например: PlotPoints, Plotlines... )

Добавить в компонент PlotPoints возможность в задавать цвет каждой точки а не всей серии сразу или же изменять цвет точек у новой серии сохранив цвет точек у предыдущей (красный,красный,красный,зеленый,зеленый,красный,зеленый.... ).

Добавить в компонент Plotlines изменять цвет линии у нового графика сохранив цвет линии у предыдущего графика (красный,красный,красный,зеленый,зеленый,красный,зеленый.... ).

Добавить в компонент PlotHistogram возможность расположения столбцов не только по вертикале но и по горизонтали + иметь возможность задать цвет каждого столбца, возможность задавать ширину столбца от 1-го пикселя.

Также хотелось бы иметь возможность динамически изменять толщину линии в Plotlines ( не всей линии а только ее участка. 1,1,1,2,2,2,3,3,4,4,5,5,4,3,2,1,....)

И вишенкой на торте была бы возиожность изменять прозрачность


Если кто-то возьмётся за допил штатных или создание новых компонентов, то готов оплатить его труды.

Редактировалось 8 раз(а), последний 2021-07-24 16:26:08
карма: 1

0
Ответов: 67
Рейтинг: 1
#12: 2021-07-25 23:07:51 ЛС | профиль | цитата
Вот такого монстра реально прикрутить к Hiasm? http://www.machinelearning.ru/wiki/index.php?title=ChartLib#.D0.9F.D0.B0.D0.BA.D0.B5.D1.82_ChartLive
карма: 1

0
Ответов: 8888
Рейтинг: 823
#13: 2021-07-26 11:18:13 ЛС | профиль | цитата
Pavel, этот "монстр" для красивого, с рюшечками, оформления научных работ, диссертаций, статей, а не для работы в реальном времени
Вы лучше выложите формат получаемых вами данных после парсинга, частоту получения данных, да нарисовали бы в Paint-е желаемый вид графика. А "рюшечки" дело десятое, можно украсить и потом
карма: 19

0
Ответов: 2059
Рейтинг: 131
#14: 2021-07-26 14:22:12 ЛС | профиль | цитата
Лёнь
Лёнь, ты наверное здесь самый внятный мужик, так мне кажется.
Подскажи, как убрать эти + и - - так это гадко.
Я далеко не не взломщик...
Может быть заявление в партию, не знаю в какую, написать?
карма: 6

0
Ответов: 8888
Рейтинг: 823
#15: 2021-07-26 15:39:28 ЛС | профиль | цитата
flint2,
?
Это про какие "+-" речь-то
Не, в партию не надо, пишем в СпортЛото!!
карма: 19

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