2016-08-03 19 views
1
public class createLineChartForSandSoil { 

    static JFreeChart chart; 
    public static XYSeries series; 

    public static void createLineChartForSandSoil(Document document) throws DocumentException, BadElementException, IOException { 
     Paragraph wordDegreeOfHeterogeneity = new Paragraph("Визначаємо ступінь неоднорідності піску:", smallFont); 
     document.add(wordDegreeOfHeterogeneity); 

     ChartPanel chartPanel = createChartPanel(); 
     int width = 450; 
     int height = 350; 
     XYPlot plot = chart.getXYPlot(); 
     XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); 
     renderer.setSeriesPaint(0, Color.BLACK); 
     plot.setRenderer(renderer); 
     plot.setOutlinePaint(Color.WHITE); 
     plot.setBackgroundPaint(Color.WHITE); 
     plot.setRangeGridlinesVisible(true); 
     plot.setRangeGridlinePaint(Color.GRAY); 
     plot.setDomainGridlinesVisible(true); 
     plot.setDomainGridlinePaint(Color.GRAY); 

     File lineChart = new File("D:/LineChart.png"); 
     ChartUtilities.saveChartAsPNG(lineChart, chart, width, height); 
     Image img = Image.getInstance("D:/LineChart.png"); 
     img.scalePercent(60f); 
     document.add(img); 
    } 

    private static XYDataset createDataset() { 
     XYSeriesCollection dataset = new XYSeriesCollection(); 
     series = new XYSeries(""); 

     series.add(2.0, sumOfParticlesLess_ValueMoreThan2); 
     series.add(1.0, sumOfParticlesLess_Value1_2); 
     series.add(0.5, sumOfParticlesLess_Value05_1); 
     series.add(0.25, sumOfParticlesLess_Value025_05); 
     series.add(0.1, sumOfParticlesLess_Value01_025); 
     series.add(0.0, 0.0); 

     dataset.addSeries(series); 

     return dataset; 
    } 

    private static ChartPanel createChartPanel() { 
     String chartTitle = ""; 
     String xAxisLabel = "Діаметр частинок d, мм"; 
     String yAxisLabel = "Сума частинок, %"; 

     XYDataset dataset = createDataset(); 

     chart = ChartFactory.createXYLineChart(chartTitle, xAxisLabel, yAxisLabel, dataset, PlotOrientation.VERTICAL, false, false, false); 

     return new ChartPanel(chart); 
    } 
} 

This code creates a line chart like on imageJavaの折れ線グラフから値を取得するにはどうすればよいですか?

どのように私はポイントY = 60でX軸(hotrizontal)の値を得ることができますか?方法.getAnnotationX()とは機能しません。なぜか分かりません(cannot find method)。誰かが私を助けることができますか?

答えて

1

60あなたXYSeries内の点の座標であれば、あなたは単にgetItems()によって返さList<XYDataItem>を検索し、対応する横軸を見つけることができます。そうではないため、ブラケティングポイント-と(0.5, 80)を検索する必要があります。次に、Regression.getOLSRegression()メソッドを使用して、2つの点を結ぶ直線の傾きと切片を見つけることができます。これらの値が与えられれば、対応する横座標を求めることができます。また、一次方程式のtwo-point formを再配置して、目的の点を見つけることもできます。 Regression.getOLSRegression()を使用する完全な例は、hereです。

image

関連する問題