Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ratings berechnen (https://www.delphipraxis.net/207068-ratings-berechnen.html)

venice2 22. Feb 2021 07:19

Ratings berechnen
 
Ich habe den Eindruck das bei meiner Berechnung irgend etwas nicht stimmig ist.

popularity: 46.253
vote_average: 6.9
vote_count: 9012

Meine Berechnung:
Delphi-Quellcode:
{$REGION 'ComputeStarRate'}

  function TTMDBInfo.ComputeStarRate: longint;
  var
    nRate: longint;
    rating: single;
  begin

    rating := gM.vote_average + (gM.popularity / 150.0);
    nRate := min(Max(round(rating * 15), 0), 150);
    result := nRate;
  end;
{$ENDREGION}
150 ist die weite des Bitmap meiner Sterne die ich als Rating benutze.

Müßte ich nicht eigentlich auch noch den Vote Count mit einbeziehen um einen korrekten wert zu ermitteln?
Bei IMDB sieht das mitunter auch unverständlich aus.

Das Rating bei diesen werten sieht so aus wie auf dem Anhang. Es sollte dabei ein arithmetischer Mittelwert herum kommen.
Was denkt ihr?

Gausi 22. Feb 2021 08:39

AW: Ratings berechnen
 
Kann sein, dass mir etwas Kontext fehlt, aber was möchtest du genau anzeigen? Oder anders herum: Was bedeutet
  • popularity (??)
  • vote_average (vermutlich der Mittelwert aller Bewertungen, aber wie ist der skaliert? 0 bis 10?)
  • vote_count (vermutlich Anzahl der Bewertungen)

Ohne weiteren Hintergrund würde ich popularity und vote_count ignorieren, und für das Sternchen-Rating den Originalwert von (im Beispiel) 6.9 auf 150 (Breite des Bildes) bzw. 5 (Anzahl der Sternchen im Bild) umskalieren ...

TiGü 22. Feb 2021 08:53

AW: Ratings berechnen
 
Wenn ich das richtig verstehe, willst du das durchschnittliche IMDB Rating (1 bis 10 Punkte) auf eine Progressbar ähnliche (!) Darstellung mit Sternen abbilden.

Wäre es dann nicht komplett ausreichend die durchschnittliche Bewertung durch 10 zu teilen und mit der Bitmapweite zu multiplizieren.
Dann runden, um den Wert in Pixeln zu ermitteln, mit dem du die Sterne gelb zeichnen musst.

Ausgefüllter_Bereich_Der_Sterne := Round(6,9 / 10 * 150); // ergibt 104

Delphi-Quellcode:
function TTMDBInfo.ComputeStarRate: longint;
const
  DEFAULT_BITMAP_WIDTH = 150.0;
begin
  Result := Round((gM.vote_average / 10) * DEFAULT_BITMAP_WIDTH);
end;

Michael II 22. Feb 2021 10:22

AW: Ratings berechnen
 
In deiner angehängten Grafik sehe ich eine 5-Stern Grafik.

Eine solche 5 Stern Grafik habe ich auf der IMDB Seite noch nie gesehen.

Nimmst du eventuell einerseits Daten aus IMDB (6.9) und einer anderen Quelle (5 Stern Grafiken)?

IMDB vergibt 1-10 Sterne und zeigt in Grafiken auch entweder
- eine Zahl (Beispiel 6.9) und einen einzigen Stern an oder aber
- 10 Sterne an färbt in deinem Fall 6.9 der 10 Sterne gelb.
Zum Beispiel hier unterhalb des Casts.

Hast du die anderen Werte von google? Oder wo auf IMDB findet man diese?

venice2 22. Feb 2021 14:55

AW: Ratings berechnen
 
Zitat:

Hast du die anderen Werte von google? Oder wo auf IMDB findet man diese?
Zitat:

Bei IMDB sieht das mitunter auch unverständlich aus.
War ein Beispiel um zu ergründen wie die das berechnen.
Macht irgendwie jeder wie er will.

Meine Daten kommen von TMDB !

venice2 22. Feb 2021 15:08

AW: Ratings berechnen
 
Zitat:

Zitat von TiGü (Beitrag 1483489)
Wenn ich das richtig verstehe, willst du das durchschnittliche IMDB Rating (1 bis 10 Punkte) auf eine Progressbar ähnliche (!) Darstellung mit Sternen abbilden.

Wäre es dann nicht komplett ausreichend die durchschnittliche Bewertung durch 10 zu teilen und mit der Bitmapweite zu multiplizieren.
Dann runden, um den Wert in Pixeln zu ermitteln, mit dem du die Sterne gelb zeichnen musst.

Ausgefüllter_Bereich_Der_Sterne := Round(6,9 / 10 * 150); // ergibt 104

Delphi-Quellcode:
function TTMDBInfo.ComputeStarRate: longint;
const
  DEFAULT_BITMAP_WIDTH = 150.0;
begin
  Result := Round((gM.vote_average / 10) * DEFAULT_BITMAP_WIDTH);
end;

Danke denke werde es auf diese weise machen scheint mir genauer zu sein.
So wie @Gausi schon sagte habe ich ja schon den Durchschnittswert (Average) und muß diesen nicht nochmals berechnen.

EDIT:
Habe jetzt 10 Sterne addiert.. etwas wuchtig aber besser für die Übersicht.
Notfalls muß ich den Dialog noch etwas in der Breite verändern. Könnte für die Votes etwas knapp werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz