Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von Oktober

SELFHTML Forumsarchiv
Tag Cloud: Algorithmus für Schriftgröße

Informationsseite
  1. Seite (PROGRAMMIERTECHNIK) Tag Cloud: Algorithmus für Schriftgröße von Simbo, 12. 10. 2007, 05:16
nach unten

Tag Cloud: Algorithmus für Schriftgröße

Die folgende Nachricht zum Thema stammt von: Simbo, 12. 10. 2007, 05:16

Servus miteinander...

ich arbeite gerade an einer PHP Klasse, die anhand eines Arrays mit Tags und deren Häufigkeit eine Tag-Cloud erstellen soll.

Die minimale und maximale Schriftgröße sollen frei wählbar sein, ebenso die Einheit (px, pt, oder em).

Als Formel zur Berechnung der Schriftgröße hab ich zuerst die bei Wikipedia genannte Formel verwendet. (http://de.wikipedia.org/wiki/Tag_cloud)

Mit dem Ergebnis bin ich aber sehr unzufrieden. Ich hätte gerne "weichere Abstufungen".

Ich hab auf dieser Seite eine Beschreibung für eine "Logarithmische Verteilung der Schriftgrößen" gefunden:
http://www.echochamberproject.com/node/247

Die Graphen dort sehen vielversprechend aus, und ich würde gerne dieselbe Formel verwenden.
Leider komme ich aber mit der Beschreibung dort überhaupt nicht zurecht... und Drupal kann ich nicht...

Kann mir jemand diese Logarithmische Drupal-Formel in PHP übersetzen?

Meine Funktion zur Berechnung der Schriftgröße sieht derzeit so aus:


function TagCloudFontsizeDistribution( $count, $mincount, $maxcount, $minsize, $maxsize ) {
  $s = ( ( ($maxsize-$minsize)*($count-$mincount) ) / ( $maxcount-$mincount ) ) + $minsize;
  return round($s,0);
}


Gruß,

Simon

nach obennach unten

Tag Cloud: Algorithmus für Schriftgröße

Die folgende Nachricht zum Thema stammt von: Simbo, 13. 10. 2007, 05:40

Wenn mir keiner helfen kann, helf ich mir eben wieder mal selbst... :P

Kevin Hoffmann's Whitepaper "In Search of the perfect Tag Cloud" hat mir dabei sehr geholfen.
Wen's interessiert: http://dotnetaddict.dotnetdevelopersjournal.com/tw.htm

Die dort beschriebene Funktion ist im Grunde genau dieselbe wie auf der Seite des EchoChamberProjects, aber nicht in Pseudo-Programmiersprache... :)

Wie auch immer... ich hab sie in PHP übersetzt und dabei ziemlich gekürzt...
Am Ende kam das dabei raus:


function GetTagSizeLogarithmic( $count, $mincount, $maxcount, $minsize, $maxsize ) {
    $steps = $maxsize-$minsize;
    $delta = ($maxcount-$mincount)/$steps;
    while( log($count+2)>log($mincount+$a*$delta+2) && $a<$steps ) $a++;
    return $minsize+$a;
  }


Funktioniert perfekt...

Falls einer von euch mal in irgendeiner Form ne Tag-Cloud machen will, viel Spaß damit...
Die Funktion lässt sich auch z.B. für Farbwerte verwenden.

Gruß

Simon

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2007 Teil von Oktober

© 1998-2008 Seite Impressum, Software: Classic Forum