View Single Post
  #2 (permalink)  
Old 10-26-2007, 01:41 AM
hardwired hardwired is offline
Senior Member
 
Join Date: Jul 2007
Posts: 1,222
hardwired is on a distinguished road
Code:
import java.awt.*; import java.awt.geom.*; import java.util.*; import javax.swing.*; public class H2 extends JPanel { int[] data; final int PAD = 20; final int BAR_HEIGHT = 25; H2(int[] data) { this.data = data; System.out.print(Arrays.toString(data)); } protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); int w = getWidth(); int h = getHeight(); // draw axes g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD)); g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD)); int numBars = data.length; double yInc = (double)(h - 2*PAD - numBars*BAR_HEIGHT)/(numBars-1); int maxValue = getMaxValue(); double unitLength = (double)(w - 2*PAD)/maxValue; // plot data g2.setPaint(Color.blue); for(int j = 0; j < numBars; j++) { double y = PAD + j * (BAR_HEIGHT + yInc); double width = unitLength*data[j]; g2.fill(new Rectangle2D.Double(PAD, y, width, BAR_HEIGHT)); } } private int getMaxValue() { int max = -Integer.MAX_VALUE; for(int j = 0; j < data.length; j++) { if(data[j] > max) max = data[j]; } return max; } public static void main(String[] args) { Random seed = new Random(); int[] vals = new int[10]; for(int j = 0; j < vals.length; j++) { vals[j] = seed.nextInt(100); System.out.print(vals[j]); if(j < vals.length-1) System.out.print(" "); else System.out.println(); } HistogramFreq freqCalc = new HistogramFreq(vals); int[] freqs = freqCalc.getValues(); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().add(new H2(freqs)); f.setSize(400,400); f.setLocation(200,200); f.setVisible(true); } } class HistogramFreq { int[] frequency; int range = 10; public HistogramFreq(int[] inputtedValue) { determineFrequency(inputtedValue); } public int[] getValues() { return frequency; } public void determineFrequency(int[] valuesProvided) { // stores frequency of inputted numbers in the appropriate ranges frequency = new int[range]; // for each range increment the appropriate range for( int valueEntered : valuesProvided) ++frequency[valueEntered/range]; } }
Reply With Quote