📝
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
実行結果

Discussion