现在我有这样的数据
a(1,2,3,4,5,6,7)
b(1,5,3,5,1,2,3)
现在想画一个坐标图
a为x轴,b为y轴
表示a,b之间的关系
请问该怎么画,
希望知道的大虾详解,
谢谢。。

解决方案 »

  1.   

    你在网上去下个jfreechart包 这个包是专门画图表的 可以画各种各样的图表 这里有参考教程:http://blog.csdn.net/hapylong/archive/2007/05/31/1633001.aspx
      

  2.   

    import java.awt.*;
    import java.awt.geom.*;
    import javax.swing.*;
    /**
     *
     * @author afunx
     */
    public class DrawTest {    public static void main(String args[]){
            EventQueue.invokeLater(new Runnable(){
                public void run(){
                    DrawFrame frame = new DrawFrame();
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setVisible(true);
                }
            });
        }
    }class DrawFrame extends JFrame{
        public DrawFrame(){
            setTitle("DrawTest");
            setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
            DrawComponent component = new DrawComponent();
            add(component);
        }
        public static final int DEFAULT_WIDTH = 400;
        public static final int DEFAULT_HEIGHT = 450;
    }
    //30像素为一个单位距离
    class DrawComponent extends JComponent{
        private int[] a = {0,1,2,3,4,5,6,7};//a中加一个0为坐标原点的x坐标
        private int[] b = {0,1,5,3,5,1,2,3};//b中加一个0为坐标原点的y坐标
        public void paintComponent(Graphics g){
            Graphics2D g2 = (Graphics2D) g;
            Double Yx = 50.0;//y轴的x坐标
            Double Yy = 50.0;//y轴的y坐标
            Double Xx = 350.0;//x轴的x坐标
            Double Xy = 350.0;//x轴的y坐标
            Double Ox = 50.0;//原点O的x坐标
            Double Oy = 350.0;//原点O的y坐标
            g2.draw(new Line2D.Double(Ox,Oy,Yx,Yy));//画x轴
            g2.draw(new Line2D.Double(Ox,Oy,Xx,Xy));//画y轴
            //画y轴的箭头:
            g2.draw(new Line2D.Double(Yx-5,Yy+5,Yx,Yy));
            g2.draw(new Line2D.Double(Yx+5,Yy+5,Yx,Yy));
            //画x轴的箭头:
            g2.draw(new Line2D.Double(Xx-5,Xy-5,Xx,Xy));
            g2.draw(new Line2D.Double(Xx-5,Xy+5,Xx,Xy));
            //标出O,X,Y:
            g2.drawString("O", 40, 360);
            g2.drawString("X", 360, 360);
            g2.drawString("Y", 40, 40);        for(int x=1;x<350/30-1;x++){
                g2.drawString(Integer.toString(x), 50+30*x, 360);
            }
            for(int y=1;y<350/30-1;y++){
                g2.drawString(Integer.toString(y),  40, 350-30*y );
            }
            //实际坐标(x,y)与图上坐标(X,Y)的映射关系为:
            //X=50+30*x,Y=350-30*y,30表示一个单位长度用30像素表示
            //JAVA中X坐标正方向为右与平时所绘函数相同,所以“+”,Y坐标正方向为左与平时所绘函数相反,所以。“-”
            //(50,350)为程序中原点的坐标
            for(int i=0;i<a.length-1;i++){
                g2.draw(new Line2D.Double(50+a[i]*30, 350-b[i]*30,50+a[i+1]*30,350-b[i+1]*30));
            }
        }
    }
      

  3.   

    感谢几位的回答,afunx的回答很有用,谢谢