marytts.tools.analysis.DrawHistogram Maven / Gradle / Ivy
The newest version!
/**
* Copyright 2008 DFKI GmbH.
* All Rights Reserved. Use is subject to license terms.
*
* This file is part of MARY TTS.
*
* MARY TTS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*
*/
/*
* DrawHistogram.java
*
* Created on 23 July, 2008, 3:42 PM
*/
package marytts.tools.analysis;
import gov.noaa.pmel.sgt.dm.SGTData;
import gov.noaa.pmel.sgt.dm.SGTMetaData;
import gov.noaa.pmel.sgt.dm.SimpleLine;
import gov.noaa.pmel.sgt.swing.JPlotLayout;
import java.text.DecimalFormat;
import marytts.util.math.Histogram;
/**
*
* @author sathish
*/
public class DrawHistogram extends javax.swing.JFrame {
public JPlotLayout layout_;
public Histogram histData;
/**
* Creates new form DarwHistogram
*
* @param data
* data
*/
public DrawHistogram(double[] data) {
initComponents();
this.setHistogramData(data, 25);
this.drawFirstHistogram(25);
}
public DrawHistogram(double[] data, int nbins) {
initComponents();
this.setHistogramData(data, nbins);
this.drawFirstHistogram(nbins);
}
private void drawFirstHistogram(int nbins) {
try {
DecimalFormat df = new DecimalFormat(" ##0.0000;-##0.0000");
layout_ = new JPlotLayout(false, false, false, "Trajectory data", null, false);
layout_ = this.plotHistogram(layout_);
this.getHistogram().resize(histogram.size());
bandwidth.setValue(nbins);
histogram.add(this.getHistogram());
histogram.updateUI();
jLabel4.setText("" + df.format(histData.mean()));
jLabel6.setText("" + df.format(histData.variance()));
jLabel8.setText("" + df.format(histData.stdDev()));
System.out.println("Mean: " + histData.mean());
System.out.println("Variance: " + histData.variance());
System.out.println("Max: " + histData.max());
System.out.println("Min: " + histData.min());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of
* this method is always regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
histogram = new javax.swing.JPanel();
controls = new javax.swing.JPanel();
bandwidth = new javax.swing.JSlider();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org.jdesktop.layout.GroupLayout histogramLayout = new org.jdesktop.layout.GroupLayout(histogram);
histogram.setLayout(histogramLayout);
histogramLayout.setHorizontalGroup(histogramLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0,
646, Short.MAX_VALUE));
histogramLayout.setVerticalGroup(histogramLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(0, 451,
Short.MAX_VALUE));
bandwidth.setMaximum(200);
bandwidth.setMinimum(5);
bandwidth.setValue(25);
bandwidth.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
changeBandWidth(evt);
}
});
jLabel1.setText("No. of Bins :");
jLabel2.setText("25");
jLabel3.setText("Mean :");
jLabel4.setText("0");
jLabel5.setText("Variance :");
jLabel6.setText("0");
jLabel7.setText("Std. Dev. :");
jLabel8.setText("0");
org.jdesktop.layout.GroupLayout controlsLayout = new org.jdesktop.layout.GroupLayout(controls);
controls.setLayout(controlsLayout);
controlsLayout.setHorizontalGroup(controlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(
controlsLayout
.createSequentialGroup()
.add(12, 12, 12)
.add(controlsLayout
.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(jLabel7)
.add(controlsLayout
.createSequentialGroup()
.add(controlsLayout
.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(controlsLayout
.createSequentialGroup()
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(bandwidth, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 278,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(controlsLayout.createSequentialGroup().add(96, 96, 96).add(jLabel1)
.add(14, 14, 14).add(jLabel2)))
.add(114, 114, 114)
.add(controlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(jLabel3).add(jLabel5))))
.add(18, 18, 18)
.add(controlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(jLabel4)
.add(jLabel6).add(jLabel8)).addContainerGap(149, Short.MAX_VALUE)));
controlsLayout.setVerticalGroup(controlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(
controlsLayout
.createSequentialGroup()
.add(31, 31, 31)
.add(controlsLayout
.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(controlsLayout
.createSequentialGroup()
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(controlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel3).add(jLabel4)))
.add(controlsLayout
.createSequentialGroup()
.add(bandwidth, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(controlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel2).add(jLabel1).add(jLabel5).add(jLabel6))))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(controlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE).add(jLabel7)
.add(jLabel8)).addContainerGap(68, Short.MAX_VALUE)));
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(
layout.createSequentialGroup()
.addContainerGap()
.add(layout
.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, controls,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(histogram, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)).addContainerGap()));
layout.setVerticalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(
layout.createSequentialGroup()
.addContainerGap()
.add(histogram, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(controls, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addContainerGap()));
pack();
}// //GEN-END:initComponents
private void changeBandWidth(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_changeBandWidth
// TODO add your handling code here:
try {
int bwSlide = bandwidth.getValue();
this.jLabel2.setText(Integer.toString(bwSlide));
this.rePlotHistogram(bwSlide);
this.getHistogram().resize(histogram.size());
histogram.add(this.getHistogram());
histogram.updateUI();
} catch (Exception e) {
System.err.println("Exception: " + e);
e.printStackTrace();
}
}// GEN-LAST:event_changeBandWidth
public void setHistogramData(double[] data, int nbins) {
this.histData = new Histogram(data, nbins);
}
public JPlotLayout plotHistogram(JPlotLayout layout) {
// layout = this.plotHistogram(layout_);
/*
* Batch changes to layout.
*/
layout.setBatch(true);
layout.setTitles("Hitogram Analysis", "", "");
layout.setTitleHeightP(0.2, 0.2);
// pack();
SimpleLine sdata = new SimpleLine(histData.getSampleArray(), histData.getHistArray(), " Float " + "Hist1");
SGTMetaData meta = new SGTMetaData("Values", "data", false, false);
sdata.setXMetaData(meta);
meta = new SGTMetaData("Histogram", "no. of occurrences", false, false);
sdata.setYMetaData(meta);
SGTData data = sdata;
layout.addData(data);
layout.setBatch(false);
return layout;
}
public void rePlotHistogram(int bandwidth) {
this.clearHistogram();
histData.changeSettings(bandwidth);
layout_ = this.plotHistogram(layout_);
}
public void clearHistogram() {
layout_.clear();
}
public JPlotLayout getHistogram() {
return layout_;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JSlider bandwidth;
private javax.swing.JPanel controls;
private javax.swing.JPanel histogram;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
// End of variables declaration//GEN-END:variables
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy