Forum: PC-Programmierung Rechnung um Werte zu "Dezimieren"


von Baeri B. (baeri)


Lesenswert?

Hallo, ich möchte in Canvas ein Diagramm bauen...

dieses Diagramm wird mit Hunderten oder gar Tausenden werten gefüttert.

jetzt habe ich unten in der X-Achse ja nur begrenzt Platz dies 
Darzustellen, also habe ich mir einen "Detector" gebaut (diesen brauche 
ich auch um die Werte richtig verteilen zu können) wie breit denn meine 
Werte sind.

Also habe ich eine Feste Breite alle Werte X eine Anzahl der Werte N
Ebenso habe ich eine Breite für mein Canvas W

wenn ich jetzt folgendes Rechne:
AUFRUNDEN( 1 / ( W / ( X * N ) )

erhalte ich eine Zahl größer gleich 1, dann passen meine Werte schön 
nebeneinander hin...

erhalte ich aber größer 1 müssen die werten entsprechend "dezimiert" 
werden.

Wie kann ich ein Javascript Array

werte = [ 1, 2, 3, 4, 5, ... ]

so bearbeiten, dass immer ein bestimmter Wert gelöscht wird?

ein Ansatz wäre:
1
function dezimiereArray( array, num ) {
2
  zaehler = 0;
3
  rueckgabe = [];
4
  array.forEach( function( val, obj ) {
5
    zaehler++;
6
    if( zaehler == num ) {
7
      rueckgabe.push( val );
8
      zaehler = 0;
9
    }
10
  });
11
  return rueckgabe;
12
}

aber so richtig "edel" sieht das nicht aus... hat jemand eine bessere 
Idee?

von Clemens L. (c_l)


Lesenswert?

Das kommt auf die Bedeutung der Werte an.

Letztendlich musst du mehrere Werte zu einem zusammenfassen. Ob 
Durchschnittswert oder Min/Max oder etwas anderes sinnvoll ist, musst du 
selbst entscheiden.

von DraconiX (Gast)


Lesenswert?

Clemens L. schrieb:
> Das kommt auf die Bedeutung der Werte an.
>
> Letztendlich musst du mehrere Werte zu einem zusammenfassen. Ob
> Durchschnittswert oder Min/Max oder etwas anderes sinnvoll ist, musst du
> selbst entscheiden.

Verstehe ich auch so... So mache ich das auch immer.

Vorgegeben ist die feste Breite des Diagramms. (z.b. 500px) jedes Pixel 
soll ein Wert verdeutlichen. Deine Anzahl an Werten (z.b. 5000) durch 
die 500 und dann diesen Bereich mitteln. In meinem Beispiel alle 10 
Werte einmal Mitteln und diesen Wert dann plotten.

von Sheeva P. (sheevaplug)


Lesenswert?

Baeri B. schrieb:
> Hallo, ich möchte in Canvas ein Diagramm bauen...
>
> dieses Diagramm wird mit Hunderten oder gar Tausenden werten gefüttert.

Warum benutzt Du keine fertige Bibliothek wie jqPlot oder Flot?

von Theor (Gast)


Lesenswert?

Baeri B. schrieb:

Du stellst an sich eine Frage, die sich auf eine Lösung bezieht.

Ich halte es aber für möglich, dass sich die Aufgabenstellung selbst, 
noch verändern könnte oder anders formuliert werden könnte und das 
Auswirkungen auf die Lösung hat. Für den Fall, dass Du meinst, das könne 
Dir helfen:


> Hallo, ich möchte in Canvas ein Diagramm bauen...
> dieses Diagramm wird mit Hunderten oder gar Tausenden werten gefüttert.
>
> jetzt habe ich unten in der X-Achse ja nur begrenzt Platz dies
> Darzustellen, [...]

Könntest Du das gewünschte Diagramm einmal genauer bezeichnen? Du 
könntest Dich vielleicht an den unter 
https://de.wikipedia.org/wiki/Diagramm genannten orientieren, wenn Du 
möchtest.

An sich habe ich, nach Deinen Worten, erst einmal ein "Punktediagramm" 
vor Augen. Dabei aber habe ich das Problem, dass ich mir nicht erklären 
kann, welche Rolle die Anzahl der Punkte für die X-Achse spielt. Besser 
gesagt, kann ich mir vorstellen, dass es Varianten davon gibt, bei denen 
es das von Dir genannte Problem gibt, aber nicht, warum Du eine dieser 
Problem-Varianten gewählt hast, wenn es auch andere gibt.

Allgemein gesagt, würde ich fragen wollen, was denn der Betrachter aus 
dem Diagramm ablesen können soll.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.