The
Random.nextGaussian() method returns the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence.
int mean = 50;
int standardDeviation = 10;
data = mean + (int)(random.nextGaussian() * standardDeviation);
package javafx_histogram;
import java.util.Random;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
* @web http://java-buddy.blogspot.com
*/
public class JavaFX_Histogram extends Application {
int DATA_SIZE = 1000;
int data[] = new int[DATA_SIZE];
int group[] = new int[10];
@Override
public void start(Stage primaryStage) {
prepareData();
groupData();
Label labelInfo = new Label();
labelInfo.setText(
"java.version: " + System.getProperty("java.version") + "\n" +
"javafx.runtime.version: " + System.getProperty("javafx.runtime.version")
);
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
final BarChart<String,Number> barChart =
new BarChart<>(xAxis,yAxis);
barChart.setCategoryGap(0);
barChart.setBarGap(0);
xAxis.setLabel("Range");
yAxis.setLabel("Population");
XYChart.Series series1 = new XYChart.Series();
series1.setName("Histogram");
series1.getData().add(new XYChart.Data("0-10", group[0]));
series1.getData().add(new XYChart.Data("10-20", group[1]));
series1.getData().add(new XYChart.Data("20-30", group[2]));
series1.getData().add(new XYChart.Data("30-40", group[3]));
series1.getData().add(new XYChart.Data("40-50", group[4]));
series1.getData().add(new XYChart.Data("50-60", group[5]));
series1.getData().add(new XYChart.Data("60-70", group[6]));
series1.getData().add(new XYChart.Data("70-80", group[7]));
series1.getData().add(new XYChart.Data("80-90", group[8]));
series1.getData().add(new XYChart.Data("90-100", group[9]));
barChart.getData().addAll(series1);
VBox vBox = new VBox();
vBox.getChildren().addAll(labelInfo, barChart);
StackPane root = new StackPane();
root.getChildren().add(vBox);
Scene scene = new Scene(root, 800, 450);
primaryStage.setTitle("java-buddy.blogspot.com");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
//generate dummy random data
private void prepareData(){
Random random = new Random();
for(int i=0; i<DATA_SIZE; i++){
//data[i] = random.nextInt(100);
int mean = 50;
int standardDeviation = 10;
data[i] = mean + (int)(random.nextGaussian() * standardDeviation);
}
}
//count data population in groups
private void groupData(){
for(int i=0; i<10; i++){
group[i]=0;
}
for(int i=0; i<DATA_SIZE; i++){
if(data[i]<=10){
group[0]++;
}else if(data[i]<=20){
group[1]++;
}else if(data[i]<=30){
group[2]++;
}else if(data[i]<=40){
group[3]++;
}else if(data[i]<=50){
group[4]++;
}else if(data[i]<=60){
group[5]++;
}else if(data[i]<=70){
group[6]++;
}else if(data[i]<=80){
group[7]++;
}else if(data[i]<=90){
group[8]++;
}else if(data[i]<=100){
group[9]++;
}
}
}
}
No comments:
Post a Comment