Wie kann ich ein Java Array als Säulendiagramm ausgeben?
Hallo,
ich habe ein Programm das die Häufigkeit bestimmter Ereignisse errechnet. Diese gebe ich Momentan als einfaches Array aus also unter jeder Zahl, von 0-35, die Häufigkeit dieser. Jetzt würde ich das gerne in einem Säulendiagramm veranschaulichen. Also x-Achse 1-36 und y-Achse die Häufigkeiten. (Andersrum währe auch ok). Hätte da jemand ne Idee am besten code mit Erklärung.
Vielen Dank vom Jim
3 Antworten
Binde dir Processing als externe Grafikbibliothek ein, so kannst du Vierecke u.ä. zeichnen.
Zum Zeichnen kannst du via 2 ineinander verschachtelten Schleifen über deine Werte laufen (von 0 bis max. Element). Pro Iteration prüfst du, ob der Wert aus dem Array bereits von dem Schleifenzähler überschritten wurde oder nicht. Wenn nicht, zeichnest du ein ausgefülltes Kästchen.
Ich würde, wenn du es selbst machen willst, einfach ein Element von JPanel ableiten. In dieses zeichnest du dann mithilfe der Graphics-Klasse Rechtecke und zusätzlich Linien für die Achsen. Text ist ebenfalls zeichenbar. Vergiss nicht Antialiasing einzuschalten, sonst sieht es schlecht aus.
Die Graphics- bzw. Graphics2D-Klasse ist ziemlich einfach aufgebaut und ein Befehl ist innerhalb weniger Sekunden ergoogelt. Das einzig "Anspruchsvolle" wird die Mathematik sein, auf deren Grundlage du Position und Größe der Säulen berechnen musst, wobei das bei dieser Aufgabe noch relativ milde ausfällt.
Schau es dir einfach mal an und frag nach, falls es Schwierigkeiten gibt.
Mit der folgenden (kostenlosen) Library geht das blitzschnell:
In welchem Rahmen? Du brauchst immer irgendeine Library für grafischen Output. Egal, ob Du jetzt Swift, JavaFX oder JFreeChart benutzt. Natürlich kannst Du auch in der Console viele Xe ausspucken, aber wer macht das bitte? :D
Eine Programmiersprache ist dafür da, Librarys zu benutzen.
Ist offensichtlich eine Hausaufgabe. Da muss man oft Dinge umsetzen, die schon längst in Bibliotheken erledigt sind.
Ja, aber selbst da glaube ich nicht, dass sie aus dem Nichts GUI-Elemente programmieren sollen :D
Dazu sind Bindings in das Betriebssystem notwendig, die noch nicht mal im Informatik-Master behandelt werden. Insofern ist die Aussage, dass keine Librarys verwendet werden dürfen, vermutlich falsch.
Man könnte noch mit JWindow und JFrame arbeiten, aber das will kein Prof, da bin ich mir ziemlich sicher.
Daher auch meine Nachfrage.
Ich muss es leider selber schreiben aber danke trzd.