From 89cdf3efb49335e7c07a68a5a64657eeec2288a6 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Mon, 6 Feb 2017 11:41:36 -0500 Subject: Inital commit --- .../FrequencyGraphComponent.java | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 projects/project1_frequencyBag/FrequencyGraphComponent.java (limited to 'projects/project1_frequencyBag/FrequencyGraphComponent.java') diff --git a/projects/project1_frequencyBag/FrequencyGraphComponent.java b/projects/project1_frequencyBag/FrequencyGraphComponent.java new file mode 100644 index 0000000..3d48c74 --- /dev/null +++ b/projects/project1_frequencyBag/FrequencyGraphComponent.java @@ -0,0 +1,71 @@ +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.geom.Line2D; + +import javax.swing.JComponent; + +@SuppressWarnings("serial") +public class FrequencyGraphComponent extends JComponent +{ + private FrequencyBag fb; + private int min; + private int max; + private int delta; + private int width; + private int height; + private int leftMargin = 10; + private int rightMargin = 10; + private int topMargin = 10; + private int bottomMargin = 10; + + public FrequencyGraphComponent(FrequencyBag afb, int aMin, int aMax, int aDelta) + { + fb = afb; + min = aMin; + max = aMax; + delta = aDelta; + } + + public void paintComponent(Graphics g) + { + Graphics2D g2 = (Graphics2D) g; + + g2.setColor(Color.BLACK); + + width = this.getWidth(); + height = this.getHeight(); + + int maxFrequency = fb.getMaxFrequency(); + double deltaWidth = (double) (width - (leftMargin + rightMargin)) / ((max - min) / delta); + double deltaHeight = (double) (height - (topMargin + bottomMargin)) / maxFrequency; + + Line2D.Double line = new Line2D.Double(0,0,0,0); + + for(int i = min; i < max; i = i + delta) + { + double sx = ((i - min) * deltaWidth) + leftMargin; + double ex = (((i + delta) - min) * deltaWidth) + leftMargin; + double sy = (height - bottomMargin) - (fb.getFrequencyOf(i) * deltaHeight); + double ey = (height - bottomMargin) - (fb.getFrequencyOf(i + delta) * deltaHeight); + line.setLine(sx,sy,ex,ey); + g2.draw(line); + } + + g2.setColor(Color.GREEN); + double accProp = 0.0; + + for(int i = min; i < max; i = i + delta) + { + accProp = accProp + fb.getProbabilityOf(i); + double nextProp = fb.getProbabilityOf(i + delta); + + double sx = ((i - min) * deltaWidth) + leftMargin; + double ex = (((i + delta) - min) * deltaWidth) + leftMargin; + double sy = (height - bottomMargin) * (1 - accProp); + double ey = (height - bottomMargin) * (1 - (accProp + nextProp)); + line.setLine(sx,sy,ex,ey); + g2.draw(line); + } + } +} -- cgit v1.2.3-70-g09d2