Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Wie erstelle ich eine Ausgefüllte Datenkurve?
#1
Hallo,

Kann mir jemand sagen in welcher Form ich
die Datenkurve (wie im Bild) Ausgefüllt bekomme

Derzeit habe ich es wie folgt gescriptet:

%Assign(Temp,%Plugin.AIDA64.System.CPU.Utilization())
%If(%List.Count(CPULoad) = 0) Then {%Loop.For(C,0,120){%List.Add(CPULoad,127)}}
%List.Delete(CPULoad,0)
%List.Add(CPULoad,%Dec(127,%Round(%Dec(%Div(%Temp(),2.15),0.5))))
%Assign(xPos,)
%Assign(yPos,%CPULoad(0))
%Graph.Pen(%xPos(),%yPos(),1)
%Loop.For(C,0,120)
{
%Assign(yPos,%CPULoad(%C()))
%Graph.LineTo(%xPos(),%yPos(),1)
%Graph.Pen(%xPos(),%yPos(),1)
%Assign(xPos,%Inc(%xPos(),1))
}





Attached Files Thumbnail(s)
   
#2
Hi,

Verstehe die Frage nicht ganz und dein Skriptbeispiel ist wohl auch unvollständig. Also die Schleife über die x-Werte von 0 bis 120 ist ja schonmal der richtige Ansatz.
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#3
Aha, ich gestehe ich habe in meinem "Copy-Paste"- Script rumgewurschtelt und sowas kommt dabei raus :-)
Ich gebe weiter zu das ich die Syntax für die Datenkurve noch nicht durchschaut habe.
Es wird doch ein Punkt gesetzt (Y) der auf der X-Achse um 1 nach links verschoben wird - richtig?
Um das ganze also als ausgefüllte Datenkurve zu bekommen müßte ich
folglich einen Strich zeichnen und keinen Punkt !?
Soll ich sonst mal das ganze Script posten ?
#4
Ach jetzt versteh ich, du willst also die fläche, die aus der kurve und dem rahmen entsteht füllen. Naja das ist doch eigentlich ganz einfach wink.gif. Derzeit malt das script eine linie von punkt x,y zu punkt x+1,y+1. wenn du jetzt also das ganze umstellst auf linie von punkt x,y zu punkt x,127 dann sollte die kurve gefüllt sein. Deine schleife ist auch etwas zu kompliziert geschrieben, xPos brauchst du garnicht da C ja schon die x position angibt.
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#5
Siehe kommentar oben und hänge bitte sd dateien an anstatt riesen schnipsel zu posten, du kannst dein script exportieren in dem du rechts auf die scriptliste klickst und dann export wählst.
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#6
Alles klar, gelöscht und angehängt.

Meine Versuche im Script haben noch nicht den gewünschten Erfolg.
Die xPos-Geschichte auf C zu reduzieren klappt nicht.


Attached Files
.sd   wavemop.sd (Size: 2,98 KB / Downloads: 86)
#7
ich hab das mal zum anlaß genommen eine vorlage mit parameters zu machen, das ganze sieht jetzt so aus basierend auf deinem script:

CODE
#Header
 /
 
 X1,Y1------
 |     y    |
 |    y yyy | height
 | ..y     y|
   xxxxxxxxxx <- y0
     width
     
 /
 
 / constant values /
 %DefVar(GraphBorderSize=1)
 
 / customizable values /
 %DefVar(GraphX1=10)
 %DefVar(GraphY1=10)
 %DefVar(GraphWidth=80)
 %DefVar(GraphHeight=35)
 
 / computed values & helpers /
 %DefVar(GraphX2=%Dec(%Inc(%GraphX1(), %GraphWidth()), 1))
 %DefVar(GraphY2=%Dec(%Inc(%GraphY1(), %GraphHeight()), 1))
 %DefVar(GraphXRange=%Dec(%GraphWidth(), %Mul(%GraphBorderSize(), 2)))
 %DefVar(GraphYRange=%Dec(%GraphHeight(), %Mul(%GraphBorderSize(), 2)))
 %DefList(GraphPointsY) / list of y coordinates /
 %DefVar(x=0)
 %DefVar(y0=%Dec(%GraphY2(), %GraphBorderSize())) / buffered lowest y value in graph /
 %DefVar(c=0) / item count of GraphPointsY /
 %DefVar(v=0) / value that is recorded and tanslated to a graph point, see concerning assign call below /
 
 %Graph.Rect(%GraphX1(), %GraphY1(), %GraphX2(), %GraphY2(), 1, 0)
 %Param.RenderMode(Full)
#EndHeader

#GfxMode
 %Param.OverlayMode()
 
 / ensure graph point count is always in graph x-range /
 %Assign(c, %List.Count(GraphPointsY))
 %If(%c() > %GraphXRange())
 {
   %List.Delete(GraphPointsY,0)
   %Assign(c, %Dec(%c(), 1))
 }
 
 / begin drawing graph on right side /
 %Assign(x, %Dec(%GraphX2(), %GraphBorderSize()))
 
 / loop over graph points to draw graph /
 %Assign(c, %Dec(%c(), 1))
 
 %Loop.For(i, 0, %c())
 {
   %Graph.Pen(%x(), %y0(), 1)
   %Graph.LineTo(%x(), %Dec(%y0(), %GraphPointsY(%Dec(%c(), %i()))), 1)
   
   %Assign(x, %Dec(%x(), 1))
 }
 
 / get next graph point value /
 %Assign(v, %Random(100)) / replace random call with any value measured in % /
 
 / translate value to graph y-range and add to graph point list /
 %List.Add(GraphPointsY, %Div(%Mul(%v(), %GraphYRange()), 100))
#EndGfxMode


Man könnte das ganze noch in eine Funktion auslagern, die man dann einfach aufrufen kann, z.B.:

CODE
%DrawGraph(10, 10, 80, 30, %CPULoad())
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#8
huh.gif das muss ich mir jetzt erstmal reintun !

"replace random call with any value measured in %" - jo, den Wert hab ich durch


%Assign(v, %Plugin.AIDA64.System.CPU.Utilization()) ersetzt und
das Ergebnis sieht sehr gut aus biggrin.gif

Vielen Dank erstmal (dafür bräuchte ich ca. 4 Wochen)
#9
Hi Virus,

Ich würde gerne auf deinen Vorschlag zurück kommen und das von dir erstellte Script
oben in eine Funktion auslagern da ich solch eine Grafikkurve nebst CPULast auch noch für Download und Upload nebeneinander haben möchte.
Dafür wäre doch eine Funktion die ich mit unterschiedlichen Plugin-Parametern wieder aufrufen kann die beste Lösung oder ?

in Sinne:

%DrawGraph(10, 10, 80, 30, %CPULoad())
%DrawGraph(10, 50, 80, 30, %Download())
%DrawGraph(10, 100, 80, 30, %Upload())

wie das jedoch mit %DrawGraph klappt konnte ich aus der Hilfe heraus nicht raffen?! unsure.gif

Die Skriptcode Zeilen zu verdreifachen ist wohl unsinnig und CPU-lastig blink.gif
#10
Hast du die Hilfe zu %DefFunc() mal angeschaut?
Current stable version of LCDHype: 0.7.6
New plugin: Notepad++ Bookmark Manager
New music: Nordwise - Empire transition
#11
Jo sicher, angeschaut hab ich das schon aber ich bin da noch nicht drin.
Ich sehe es mir aber nachher noch einmal an -> vielleicht bin ich zu blöd die Syntax zu raffen...mal sehen.

%DefFunc(GBox=

%DefVar(GraphX1=%GBox ..... nee so gehts nicht


Ich will ja in Zukunft mit mit der Funktion vereinfachen,

im Sinne von:

%GBox(xoffset,yoffset,x,y, %Plugin.AIDA64.System.CPU.Utilization())
%GBox(xoffset,yoffset,x,y, %Plugin.AIDA64.System.NIC.UploadRate(1)
%GBox(xoffset,yoffset,x,y, %Plugin.AIDA64.System.NIC.DownloadRate(1)

oder in das jetzt totaler murks ?

Ich sage also nur noch von wo bis wo geht die box und der Ausgabewert welches
Plugins soll darin skaliert werden ?! ph34r.gif
[CODE]


Forum Jump:


Users browsing this thread: 1 Guest(s)