Dark Ranger
Erfahrenes Mitglied
Guten Morgen
Da ich hier nicht die Möglichkeit habe, irgendetwas herunterzuladen, kann ich auch nichts herunterladen was mir beim erstellen von einem Diagramm helfen würde.
Ich will ein Diagramm machen und habe da ein paar Daten. Diese Daten stellen zugriffe dar.
Im moment bastele ich mir ein Bild und auf diesem Bild stellen 4 Pixel 5 Minuten dar. Und dann schaue ich mir halt die Werte an und färbe die entsprechenden Pixel dann ein, sodass ich später ein Säulendiagramm habe.
Nun ist es aber ziemlich umständlich, da ich ja alles immer anpassen muss und im moment viele for-Schleifen habe.
Ich habe mir überlegt, dass es vielleicht einfacher wäre, da eine eigene Klasse zu haben, der ich eine Map<String, Integer> übergebe und die dann das ganze Diagramm erstellt.
Allerdings weiß ich nicht wie ich das am besten anstellen soll? Am besten wäre ja auch ein richtiges Koordinatensystem, welches bei (0,0) anfängt und dann y nach oben hin größer wird und nicht nach unten. Den Ursprungspunkt zu verschieben, da habe ich glaube ich schonmal etwas drüber gelesen.
Mit diesem Code erzeuge ich alleine nur sozusagen den Hintergrund für das Diagramm
Da ich hier nicht die Möglichkeit habe, irgendetwas herunterzuladen, kann ich auch nichts herunterladen was mir beim erstellen von einem Diagramm helfen würde.
Ich will ein Diagramm machen und habe da ein paar Daten. Diese Daten stellen zugriffe dar.
Im moment bastele ich mir ein Bild und auf diesem Bild stellen 4 Pixel 5 Minuten dar. Und dann schaue ich mir halt die Werte an und färbe die entsprechenden Pixel dann ein, sodass ich später ein Säulendiagramm habe.
Nun ist es aber ziemlich umständlich, da ich ja alles immer anpassen muss und im moment viele for-Schleifen habe.
Ich habe mir überlegt, dass es vielleicht einfacher wäre, da eine eigene Klasse zu haben, der ich eine Map<String, Integer> übergebe und die dann das ganze Diagramm erstellt.
Allerdings weiß ich nicht wie ich das am besten anstellen soll? Am besten wäre ja auch ein richtiges Koordinatensystem, welches bei (0,0) anfängt und dann y nach oben hin größer wird und nicht nach unten. Den Ursprungspunkt zu verschieben, da habe ich glaube ich schonmal etwas drüber gelesen.
Code:
//Grafik einrichten
GraphicsConfiguration gfxConf = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
BufferedImage image = gfxConf.createCompatibleImage( (293*4)+10, 150*4);
//x-Achse zeichnen
image.createGraphics().fillRect( 0, image.getHeight()-5*4, image.getWidth(), 5 );
//y-Achse zeichnen
image.createGraphics().fillRect( 5*4+5, 0, 5, image.getHeight() );
//y-Achsen Beschriftung und Zwischenbalken
int ytext=5;
for(int i=30;i<image.getWidth();i++) {
int j=i-30;
if((j%4)==0 && j!=0) {
Color cache = Color.BLACK.brighter();
for(int q=0;q<=5;q++) {
cache = cache.brighter();
}
int brighter = cache.getRGB();
for(int y=1;y<image.getHeight()-20;y++) {
image.setRGB(i, y, brighter);
}
}
}
for(int y=image.getHeight()-40;y>0;y-=5*4) {
image.createGraphics().drawString(to3(ytext), 1, y+4);
for (int x=30;x<image.getWidth();x++) {
image.setRGB(x, y, grgb);
image.setRGB(x, y-1, grgb);
image.setRGB(x, y-2, grgb);
image.setRGB(x, y-3, grgb);
}
ytext+=5;
}
//x-Achse und Zwischenbalken
int count=30;
int time=1;
for(int i=30;i<image.getWidth();i++) {
int j=i-30;
if((j%4)==0 && j!=0) {
if((j%48)==0 && j!=0) {
for(int y=1;y<image.getHeight()-20;y++) {
image.setRGB(i, y, lgrgb);
}
image.createGraphics().drawString(to2(time), i-6, image.getHeight()-1);
time++;
}
}
} usw.
Zuletzt bearbeitet: