"Intelligente" skalierung im Diagramm?
Übersicht

![]() |
SmilyBetreff: "Intelligente" skalierung im Diagramm? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoi,
Ich stehe gerade etwas auf dem Schlauch bei einem Projekt und bräuchte mal einen kleinen Ansatz. Und zwar geht es um ein Diagramm. Gegeben ist mir die Höhe in Pixel und der Höchste Y-Wert. (Das Diagramm kann Daten sowohl in Zahlendimensionen >1000 aber auch in Berreichen wie 0.01 anzeigen lassen. Je nach dem aktuellen Einsatz) Nun soll ich eine möglichst intelligente Skalierung (also den Abstand zwichen den einzelnen zwichenschritten im Angezeigten Raster) finden. Leider habe ich bisher noch keine so richtigen ansätze gefunden. Kann mir da jemand mit einem kleinen Tip weiterhelfen pls? |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mal so ein Universal Digramm erstellt für so einen Contest, mal sehen ob ich es noch finde
Code: [AUSKLAPPEN] Graphics 800,600
Dim FPS(4) Dim geszaehl(90) Menge= 8 Global MausX , MausY For i=1 To 8 : Read geszaehl(i) : Next Data 78 , 31, 14, 113, 58, 89, 51, 101 Win_X1= 50 Win_Y1= 50 Win_X2= 700 Win_Y2 = 500 SetBuffer BackBuffer() While Not KeyDown(1) MausX = MouseX() MausY = MouseY() Text 9,9,"F1 = Hilfe" If KeyHit(57) Then Art = Art Xor 1 Menge = Menge + KeyHit(61) - KeyHit(60) If Menge < 2 Then Menge = 2 If Menge > 90 Then Menge = 90 Win_X1= Win_X1+ (KeyDown(205) - KeyDown(203)) If Win_X1< 0 Then Win_X1= 0 Win_Y1 = Win_Y1 + ( KeyDown(208) - KeyDown(200)) If Win_Y1 < 25 Then Win_Y1 = 25 Win_X2 = Win_X2 + (KeyDown(32) - KeyDown(30)) If Win_X2 + Win_X1> 799 Then Win_X1= Win_X1-1 Win_Y2 = Win_Y2 + (KeyDown(17) - KeyDown(31)) If Win_Y2 + Win_Y1> 599 Then Win_Y1= Win_Y1- 1 Diagramm ( 1 , Menge , Win_X1, Win_Y1, Win_X2 , Win_Y2 , Art ) Color $FF,$FF,$FF If KeyHit(59) Color Rand($FF),Rand($FF),Rand($FF) Rect 80,80,265,170 Color 0,0,0 Text 90,90,"Steuertasten = Verschieben" Text 90,110,"Space = Ansicht ändern" Text 90,130,"W A S D = Größe ändern" Text 90,150,"F2 - F3 = Spaltenanzahl ändern" Text 90,170,"ESC = Beenden" Text 90,190,"Maustasten = Werte ändern" Text 150,210,">>Taste<<" Flip WaitKey End If Color 0,0,0 Rect MausX ,MausY ,5,5 Color $FF,$FF,$FF Rect MausX ,MausY ,5,5,0 Text 700,9,"FPS:"+FPS(1):FPS(2)=FPS(2)+1:If MilliSecs()>FPS(3)+999 Then FPS(1)=FPS(2):FPS(2)=0:FPS(3)=MilliSecs() Flip 0 Cls Wend End Function Diagramm ( ArrayVon, ArrayBis, WinStartX, WinStartY, BreiteX#, HoeheY#, Art ) IndexMenge = ArrayBis - ArrayVon + 1 For t= ArrayVon To ArrayBis If MaxWert < geszaehl(t) Then MaxWert = geszaehl(t) Next SeedRnd(1) Select Art ::Case 0 BalkenX = BreiteX / IndexMenge Rect WinStartX -1 , WinStartY -1, BalkenX * IndexMenge +1,HoeheY +2 Factor# = HoeheY / MaxWert While IndexMenge > Zeiger Rx1 = Zeiger * BalkenX + WinStartX Rx2 = BalkenX - 1 Ry2 = geszaehl( Zeiger + ArrayVon ) * Factor Ry1 = WinStartY + HoeheY - Ry2 Color Rand($FF),Rand($FF),Rand($FF) Rect Rx1 , Ry1 , Rx2 , Ry2 Color 0,0,0 Text Rx1 + BalkenX / 2 + 1 , Ry1 + 1 , geszaehl( Zeiger + ArrayVon ) , 1 Color $FF,$FF,$FF Text Rx1 + BalkenX / 2 , Ry1 ,geszaehl( Zeiger + ArrayVon ),1 If RectsOverlap( Rx1 , WinStartY , Rx2 , HoeheY , MausX , MausY , 4, 4) Then Mf(Zeiger + ArrayVon) End If Zeiger = Zeiger + 1 Wend ::Case 1 BalkenY = HoeheY / IndexMenge Rect WinStartX - 1 , WinStartY-1 , BreiteX+2 , BalkenY * IndexMenge + 2 , 1 Factor# = BreiteX / MaxWert While IndexMenge > Zeiger Rx1 = WinStartX Ry1 = WinStartY + Zeiger * BalkenY Rx2 = geszaehl( Zeiger + ArrayVon ) * Factor Ry2 = BalkenY - 1 Color Rand($FF),Rand($FF),Rand($FF) Rect Rx1 ,Ry1 , Rx2 , Ry2 , 1 Color 0,0,0 Text Rx1 +1 , Ry1 + BalkenY/2 +1, geszaehl(Zeiger + ArrayVon),0,1 Color $FF,$FF,$FF Text Rx1 , Ry1 + BalkenY /2, geszaehl(Zeiger + ArrayVon),0,1 If RectsOverlap ( Rx1 + 1, Ry1 + 1, BreiteX ,Ry2 , MausX , MausY ,4 ,4) Then Mf( Zeiger + ArrayVon ) End If Zeiger = Zeiger + 1 Wend End Select End Function Function Mf(x) If MouseDown(1) Then geszaehl(x) = geszaehl(x) + 1 If MouseDown(2) Then If geszaehl(x) > 0 Then geszaehl(x) = geszaehl(x) - 1 End If End If End Function hab ihn doch gefunden, einfach mal ausprobieren mit F1 gibt es Hilfe |
||
[BB2D | BB3D | BB+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group