2017-02-21 27 views
1

Прилагается мой фрагмент кода здесь, я использую XYStepChart с фабрики диаграмм. Шкала оси x на выходе для кода отображается в масштабе, например: 05:30:00:00, 05:30:00:01, 05:30:00:00. Но мне нужны такие значения, как 1,2,3,4.Как установить заголовки данных оси X JFreeChart?

package org.jfree.chart.demo; 

import java.awt.BasicStroke; 
import java.awt.Color; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartFrame; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.data.xy.XYSeriesCollection; 
import org.jfree.ui.RefineryUtilities; 
public class XYStepChartDemo 
{ 
private ChartFrame frame = null; 
private void displayChart() { 
    if (this.frame == null) { 
     final String title = "Trace"; 
     final String xAxisLabel = "Tasks"; 
     final String yAxisLabel = "Amplitude"; 
     final XYDataset data = createStepXYDataset(); 
     final JFreeChart chart = ChartFactory.createXYStepChart(
      title, 
      xAxisLabel, yAxisLabel, 
      data, 
      PlotOrientation.VERTICAL, 
      true, // legend 
      true, // tooltips 
      false // urls 
     ); 
     chart.setBackgroundPaint(new Color(216, 216, 216)); 
     final XYPlot plot = chart.getXYPlot(); 
     plot.getRenderer().setSeriesStroke(0, new BasicStroke(2.0f)); 
     plot.getRenderer().setSeriesStroke(1, new BasicStroke(2.0f)); 
     this.frame = new ChartFrame("Plan Comparison", chart); 
     this.frame.pack(); 
     RefineryUtilities.positionFrameRandomly(this.frame); 
     this.frame.setVisible(true); 
    } 
    else { 
     this.frame.setVisible(true); 
     this.frame.requestFocus(); 
    } 
    } 

public static XYDataset createStepXYDataset() { 
final XYSeries series1 = new XYSeries("Series 2"); 
series1.add(0, 5); 
series1.add(1, 0); 
series1.add(2, 0); 
series1.add(3, 0); 
series1.add(4, 0); 
series1.add(5, 5); 
series1.add(6, 0); 
series1.add(7, 0); 
series1.add(8, 0); 
final XYSeriesCollection dataset = new XYSeriesCollection(); 
dataset.addSeries(series1); 
return dataset; 
    } 
    public static void main(final String[] args) { 
    final XYStepChartDemo demo = new XYStepChartDemo(); 
    demo.displayChart(); 

    } 

    } 

Output looks like x-axis in some time format, i need only in values like 1, 2, 3, 4 etc to be displayed

+0

может кто-то пожалуйста, помогите –

+1

Cross отправленный [здесь] (http://www.jfree.org/forum/viewtopic.php?f=3&t=117785). – trashgod

ответ

3

ChartFactory.createXYStepChart использует DateAxis для домена, так что ваши XYSeries координаты интерпретируются как секунды с Java epoch. Вы можете,

  • Использование setDateFormatOverride() для форматирования значения, как показано here.

  • Использование setDomainAxis() на XYPlot подставить NumberAxis для домена, а также предложил here; использовать целые единицы тика, как предложено here.

    NumberAxis domain = new NumberAxis(xAxisLabel); 
    domain.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 
    plot.setDomainAxis(domain); 
    

image