2012-12-27 20 views
12

मैं एक JFree XY रेखा चार्ट जो हमेशा पर शुरू होता है है एक्स = 0. तो उपयोगकर्ता परिभाषित सेटिंग के आधार पर एक गुण से अनुप्रयोग है कि संख्या के आधार पर वेतन वृद्धि फ़ाइलJFReeChart एक्स अक्ष पैमाने

(इस मिनट में समय का प्रतिनिधित्व करता)

उदाहरण के लिए x = 0 उपयोगकर्ता परिभाषित सेटिंग शुरू करने के लिए 5 है - इसलिए स्केल 0, 5, 10, 15, 20 .... या उपयोगकर्ता सेटिंग 3 है इसलिए यह 0, 3, 6, 9, 12 हो जाता है ......

बहुत आसान।

मेरे पास जो मुद्दा है वह ग्राफ जिस तरह से शुरू होता है। अगर मैं 0 से शुरू करता हूं, तो 0 00000005, -0.000004, -0.000003 ..... 0.000000, 0.000001, 0.000002 के साथ नीचे बाईं ओर ग्राफ के बीच में 0 है ... 0.000005

मैं मैन्युअल रूप से नीचे पैमाने को स्केल कैसे जोड़ सकता हूं, यानी परिभाषित करता हूं कि यह 2 की वृद्धि होनी चाहिए और फिर यह इसे बनाए रखे?

अपना समय

उत्तर

13

आप NumberAxis का उपयोग करना चाहिए, जो आपके चार्ट के पैमाने को परिभाषित करने के तरीकों में से एक बहुत कुछ शामिल करने के लिए धन्यवाद।

उदाहरण:

// Create an XY Line chart 
XYSeries series = new XYSeries("Random Data"); 
series.add(1.0, 500.2); 
series.add(10.0, 694.1); 
XYSeriesCollection data = new XYSeriesCollection(series); 
JFreeChart chart = ChartFactory.createXYLineChart("XY Series Demo", "X", "Y", data, 
                PlotOrientation.VERTICAL, 
                true, true, false); 

// Create an NumberAxis 
NumberAxis xAxis = new NumberAxis(); 
xAxis.setTickUnit(new NumberTickUnit(2)); 

// Assign it to the chart 
XYPlot plot = (XYPlot) chart.getPlot(); 
plot.setDomainAxis(xAxis); 
+1

+1 'setTickUnit के लिए()'। – trashgod

3

इस example के आधार पर, यहाँ एक ssccesetTickUnit() का उपयोग करता है गतिशील डोमेन अक्ष टिक इकाई समायोजित करने के लिए, मूल्य 5 से शुरू है।

image

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.util.Random; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JSpinner; 
import javax.swing.SpinnerNumberModel; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.axis.NumberAxis; 
import org.jfree.chart.axis.NumberTickUnit; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.data.xy.XYSeriesCollection; 

/** @see https://stackoverflow.com/a/14167983/230513 */ 
public class SSCCE { 

    private static final int COUNT = 100; 
    private static final int UNITS = 5; 
    private static final Random r = new Random(); 

    public static void main(String[] args) { 
     XYSeries series = new XYSeries("Data"); 
     for (int i = 0; i < COUNT; i++) { 
      series.add(i, r.nextGaussian()); 
     } 
     XYSeriesCollection data = new XYSeriesCollection(series); 
     final JFreeChart chart = ChartFactory.createXYLineChart("TickUnits", 
      "X", "Y", data, PlotOrientation.VERTICAL, true, true, false); 
     XYPlot plot = (XYPlot) chart.getPlot(); 
     final NumberAxis xAxis = (NumberAxis) plot.getDomainAxis(); 
     xAxis.setTickUnit(new NumberTickUnit(UNITS)); 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       JFrame f = new JFrame("TickUnitDemo"); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       f.add(new ChartPanel(chart)); 
       final JSpinner spinner = new JSpinner(
        new SpinnerNumberModel(UNITS, 1, COUNT, 1)); 
       spinner.addChangeListener(new ChangeListener() { 

        @Override 
        public void stateChanged(ChangeEvent e) { 
         JSpinner s = (JSpinner) e.getSource(); 
         Number n = (Number) s.getValue(); 
         xAxis.setTickUnit(new NumberTickUnit(n.intValue())); 
        } 
       }); 
       JPanel p = new JPanel(); 
       p.add(new JLabel(chart.getTitle().getText())); 
       p.add(spinner); 
       f.add(p, BorderLayout.SOUTH); 
       f.pack(); 
       f.setLocationRelativeTo(null); 
       f.setVisible(true); 
      } 
     }); 

    } 
} 
+0

यदि यह ठीक नहीं है तो आप अपने प्रश्न को स्पष्ट करने में मदद कर सकते हैं। – trashgod

संबंधित मुद्दे