#5, First Floor, 4th Street , Dr. Subbarayan Nagar, Kodambakkam, Chennai-600 024 pro@slogix.in

Office Address

  • #5, First Floor, 4th Street Dr. Subbarayan Nagar Kodambakkam, Chennai-600 024 Landmark : Samiyar Madam
  • pro@slogix.in
  • +91- 81240 01111

Social List

How to generate graph using java?

Description

Graph.java file draws the graph for the input data array. Graphics2D object and its methods are applied to generate the graph.

Sample Code
  • Filename: Graph.java

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;

public class Graph extends JPanel {

int data[] = new int[50];
final int PAD = 50;

protected void paintComponent(Graphics g) {

for (int i=0;i<50;i++) {
data[i] = i;
}

super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
int w = getWidth();
int h = getHeight();
// Draw ordinate.
g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD));
// Draw abcissa.
g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD));
// Draw labels.
Font font = g2.getFont();
FontRenderContext frc = g2.getFontRenderContext();
LineMetrics lm = font.getLineMetrics("0", frc);
float sh = lm.getAscent() + lm.getDescent();
// Ordinate label.
String s = "y axis";
float sy = PAD + ((h – 2*PAD) – s.length()*sh)/2 + lm.getAscent();
for(int i = 0; i < s.length(); i++) {
String letter = String.valueOf(s.charAt(i));
float sw = (float)font.getStringBounds(letter, frc).getWidth();
float sx = (PAD – sw)/2;
g2.drawString(letter, sx, sy);
sy += sh;
}
// Abcissa label.
s = "x axis";
sy = h – PAD + (PAD – sh)/2 + lm.getAscent();
float sw = (float)font.getStringBounds(s, frc).getWidth();
float sx = (w – sw)/2;
g2.drawString(s, sx, sy);
// Draw lines.
double xInc = (double)(w – 2*PAD)/(data.length-1);
double scale = (double)(h – 2*PAD)/getMax();
g2.setPaint(Color.green.darker());
System.out.println("Line");
for(int i = 0; i < data.length-1; i++) {
double x1 = PAD + i*xInc;
double y1 = h – PAD – scale*data[i];
double x2 = PAD + (i+1)*xInc;
double y2 = h – PAD – scale*data[i+1];
g2.draw(new Line2D.Double(x1, y1, x2, y2));
}
// Mark data points.
g2.setPaint(Color.blue);
System.out.println("point");
for(int i = 0; i < data.length; i++) {
double x = PAD + i*xInc;
double y = h – PAD – scale*data[i];
g2.fill(new Ellipse2D.Double(x-2, y-2, 4, 4));
}
}

private int getMax() {
int max = -Integer.MAX_VALUE;
for(int i = 0; i < data.length; i++) {
if(data[i] > max)
max = data[i];
}
return max;
}

public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new Graph());
f.setSize(600,600);
f.setLocation(200,200);
f.setVisible(true);

}
}


Screenshots