📝

Javaで円グラフを作成してみた

に公開

初めに

Javaをあまり触ったことはありませんでしたが、大学で以前にグラフの描画をしていたので、いくつかのうちの一つの円グラフを紹介しようと思います!

実際のコード

graph2
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class graph1 extends Application {
   public graph1() {
   }

   public void start(Stage var1) throws Exception {
      Group var2 = new Group();
      Canvas var3 = new Canvas(400.0, 400.0);
      GraphicsContext var4 = var3.getGraphicsContext2D();
      this.drawShapes(var4);
      var2.getChildren().add(var3);
      Scene var5 = new Scene(var2, 400.0, 400.0, Color.WHITE);
      var1.setTitle("Bar Graph");
      var1.setScene(var5);
      var1.show();
   }

   public static void main(String[] var0) {
      launch(var0);
   }

   private void drawShapes(GraphicsContext var1) {
      try {
         File var2 = new File("./data.txt");
         FileReader var3 = new FileReader(var2);
         BufferedReader var4 = new BufferedReader(var3);
         String var5 = var4.readLine();
         String[] var6 = var5.split(" ");
         int[] var7 = new int[var6.length];

         int var8;
         for(var8 = 0; var8 < var6.length; ++var8) {
            var7[var8] = Integer.parseInt(var6[var8]);
         }

         if (20 < var6.length) {
            System.out.printf("\u30a8\u30e9\u30fc\uff1a\u30c7\u30fc\u30bf\u6570\u904e\u591a\u3002%n");
         } else {
            var1.setFill(Color.LIGHTGRAY);
            var1.fillRect(50.0, 50.0, 300.0, 200.0);
            var1.setStroke(Color.BLACK);
            var1.setFill(Color.BLACK);
            var1.strokeLine(50.0, 250.0, 350.0, 250.0);
            var1.strokeLine(50.0, 250.0, 50.0, 50.0);

            for(var8 = 0; var8 < 5; ++var8) {
               var1.strokeLine(50.0, (double)(250 - 40 * var8), 350.0, (double)(250 - 40 * var8));
            }

            double var17 = (double)(300 / var6.length);

            for(int var10 = 0; var10 < var6.length; ++var10) {
               var1.strokeLine(50.0 + (double)var10 * var17, 250.0, 50.0 + (double)var10 * var17, 252.0);
            }

            double var18 = 0.0;

            for(int var12 = 0; var12 < var6.length; ++var12) {
               if (var18 < (double)var7[var12]) {
                  var18 = (double)var7[var12];
               }
            }

            double var19 = var18 + 5.0;

            int var14;
            for(var14 = 0; var14 <= 5; ++var14) {
               var1.setFill(Color.BLACK);
               var1.strokeLine(48.0, (double)(50 + var14 * 40), 50.0, (double)(50 + var14 * 40));
               var1.fillText(String.valueOf(var19 * (double)var14 / 5.0), 10.0, (double)(250 - var14 * 40));
            }

            for(var14 = 0; var14 <= var6.length; ++var14) {
               var1.setFill(Color.BLACK);
               var1.fillText(String.valueOf(var14), 50.0 + (double)var14 * var17, 270.0);
            }

            for(var14 = 0; var14 < var6.length - 1; ++var14) {
               var1.setFill(Color.BLACK);
               var1.strokeLine(50.0 + (double)(var14 + 1) * var17, 250.0 - (double)(200 * var7[var14]) / var19, 50.0 + (double)(var14 + 2) * var17, 250.0 - (double)(200 * var7[var14 + 1]) / var19);
            }
         }

         var4.close();
      } catch (FileNotFoundException var15) {
         System.err.println("\u30d5\u30a1\u30a4\u30eb\u304c\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\uff0e");
      } catch (IOException var16) {
         System.err.println("\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff0e");
      }

   }
}

5 10 15 10 20 9

実行結果

KA projects

Discussion