【问题标题】:How can i make a graph as shown in image?如何制作如图所示的图表?
【发布时间】:2012-04-18 19:11:02
【问题描述】:

目前,当我运行此代码时,它向我显示了一个如上所示的图表,我想绘制一个我已经显示的图表。目前它绘制一个关于 (0,0) 对称的图形,我认为从 (0,-3) 或 (0,

当前代码:

public class Profile  {



    double last=0;
    ChartFrame frame1;
    JToolBar jt=new JToolBar();
    public void generateProfile(int[] pointValue,double[] distance){
        ArrayList pv=new ArrayList();
        ArrayList dist=new ArrayList();

        pv.add(pointValue);
        dist.add(distance);
        int min=pointValue[0];
        for(int i=0;i<pv.size();i++){
            //System.out.print(pointValue[i]);
            if(pointValue[i]<min){
                min=pointValue[i];
            }
        }
        for(int i=0;i<dist.size();i++){
            System.out.print(distance[i]);
        }


        XYSeries series = new XYSeries("Average Weight");
        for(int i=0;i<pointValue.length;i++){
            //if(pointValue[i]!=0){
              series.add(last,pointValue[i]);
              last=distance[i];
            //}
         }


      XYDataset xyDataset = new XYSeriesCollection(series);
      JFreeChart chart= ChartFactory.createXYAreaChart("Profile View Of Contour", "Distance", "Contour Value", xyDataset, PlotOrientation.VERTICAL, true, true, false);
      ValueAxis rangeAxis = chart.getXYPlot().getRangeAxis();
      rangeAxis.setLowerBound(-3);
      frame1=new ChartFrame("XYLine Chart",chart);

      JButton saveimg=new JButton(new AbstractAction("Save as Image"){
            public void actionPerformed(ActionEvent e) {
                //some other lines of code...
            }
      });
      jt.add(saveimg);
      frame1.add(jt, BorderLayout.NORTH);
      frame1.setVisible(true);
      frame1.setSize(300,300);
    }



    public static void main(String ar[]){
        Profile pro=new Profile();
        int[] pv={2,3,0,5,-2,10};
        double[] dist={1,4,8,12,14,20};
        pro.generateProfile(pv, dist);



    }
}

【问题讨论】:

  • 您可以采用here 所示的方法之一。

标签: java swing graph jfreechart


【解决方案1】:

XYAreaRenderer 目前不支持此功能。但是,实现这一点应该不会太难。查看XYAreaRenderer.drawItem() 方法的代码。在此方法中,有一个局部变量 transZero 使用实际零值 (0.0) 计算得出。如果您只是将 0.0 替换为其他值,这可能会满足您的需求。

实现此目的的最简单方法是创建您自己的渲染器,该渲染器派生自 XYAreaRenderer 并覆盖 drawItem()。在此方法中复制原始代码并按上述方式进行修改。

然后你只需要通过编写来使用这个新的渲染器

XYAreaRenderer yourNewRenderer = ...; /* initialize here */
chart.getXYPlot().setRender(yourNewRenderer);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多