📄 graph1.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.Color;
import javax.swing.JComponent;
public class Graph1 extends JFrame{
double minX,minY,maxX,maxY;
double scaleX,scaleY;
Cluster[] clusters;
Color[] colors={Color.BLACK,Color.MAGENTA,Color.RED,Color.BLUE,Color.CYAN,Color.PINK,Color.GREEN,Color.ORANGE,Color.YELLOW};
public Graph1(Cluster[] clusts){
super("Graph");
clusters=clusts;
calMinMaxPoints();
setSize(1025,750);
setVisible(true);
}
public void paint(Graphics g){
System.out.println("paint called..");
validate();
g.translate(50,50);
setBackground(Color.white);
g.setColor(Color.RED);
g.drawLine(0,0,950,0);
g.drawLine(0,0,0,650);
drawBoundaries(g);
g.setColor(Color.BLACK);
plotPoints(g);
// g.drawOval(100,100,3,3);
// g.drawOval(105,100,3,3);
}
public void drawBoundaries(Graphics g){
double i=0;int j=0;
g.setColor(Color.blue);
// points for X-axis
for(i=0,j=0; i<=950+scaleX; i+=scaleX,j++){
g.drawLine((int)i,0,(int)i,3);
g.drawString(""+((int)Math.floor(minX)+j),(int)(i-10),-5);
}
// points for Y-axis
for(i=0,j=0; i<=650; i+=scaleY,j++){
g.drawLine(0,(int)i,3,(int)i);
g.drawString(""+((int)Math.floor(minY)+j),-25,(int)i);
}
}
public void calMinMaxPoints(){
int i=0,j=0;
double x,y;
for(i=0;i<clusters.length;i++)
for(j=0;j<clusters[i].getClusterSize();j++){
DataPoint dp=clusters[i].getDataPoint(j);
x=dp.getX();
y=dp.getY();
if( i==0 && j==0){
minX=maxX=x;
minY=maxY=y;
}
else{
if(minX>x) minX=x;
if(maxX<x) maxX=x;
if(minY>y) minY=y;
if(maxY<y) maxY=y;
}
}
System.out.println("\nminX is "+minX+" minY is "+minY+" maxX is "+maxX+" maxY is "+maxY);
minX=Math.floor(minX/10)*10; //((int)(minX/10)-1)*10;
minY=Math.floor(minY/10)*10; //((int)(minY/10)-1)*10;
maxX=Math.ceil(maxX/10)*10; //((int)(maxX/10)+1)*10;
maxY=Math.ceil(maxY/10)*10; //((int)(maxY/10)+1)*10;
if(minX<0) minX=0;
if(maxX<0) maxX=0;
scaleX=((950.0)/(maxX-minX));
scaleY=((650.0)/(maxY-minY));
System.out.println("\nminX is "+minX+" minY is "+minY+" maxX is "+maxX+" maxY is "+maxY+"scalX is: "+scaleX+" scaleY is "+scaleY);
}
public void plotPoints(Graphics g){
int i,j;
int x,y;
// plot the cluster points
for(i=0; i<clusters.length; i++){
g.setColor(colors[i]);
for(j=0; j<clusters[i].getClusterSize(); j++){
DataPoint dp=clusters[i].getDataPoint(j);
x=(int)dp.getX();
y=(int)dp.getY();
x=(int)((x-minX)*scaleX);
y=(int)((y-minY)*scaleY);
g.drawOval(x,y,5,5);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -