2013-12-03 5 views
1

Я использую JFreeChart для построения линейного графика. Приложение считывает сенсорные данные каждые 100 миллисекунд, поэтому в течение нескольких минут захвата это множество данных. Я не строю график динамически, он статичен. Я использую график категории, поскольку ось иногда может быть десятичным значением, в других случаях это могут быть строки, в других случаях она может быть логической. Моя проблема заключается в оси X (время) имеет так много данных я не могу разобрать текст:JFreeChart Большие данные не могут читать ось

enter image description here

Каждый знает, что я могу сделать здесь? Любые советы или приемы для решения этой проблемы будут замечательными!

private CategoryDataset createDataset() { 
    String series1 = "First"; 
    String series2 = "Second"; 
    String category1 = "Category 1"; 
    String category2 = "Category 2"; 
    DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
    for (int i = 0; i < time.size(); i++) { 
     dataset.addValue(Math.random(), series1, time.get(i)); 
    } 
    return dataset; 

} 

private JFreeChart createChart(final CategoryDataset dataset) { 

    // create the chart... 
    final JFreeChart chart = ChartFactory.createLineChart(
      "Line Chart Demo 6", // chart title 
      "Time", // x axis label 
      "RPM", // y axis label 
      dataset, // data 
      PlotOrientation.VERTICAL, 
      true, // include legend 
      true, // tooltips 
      false // urls 
    ); 

    chart.setBackgroundPaint(Color.white); 

    final CategoryPlot plot = chart.getCategoryPlot(); 
    plot.setBackgroundPaint(Color.white); 
    plot.setDomainGridlinePaint(Color.white); 
    plot.setRangeGridlinePaint(Color.white); 

    final CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer(); 

    plot.setRenderer(renderer); 



    return chart; 

} 

public void setLists(ArrayList<String> time) { 
    this.time = time; 
    final CategoryDataset dataset = createDataset(); 
    final JFreeChart chart = createChart(dataset); 
    final ChartPanel chartPanel = new ChartPanel(chart); 
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); 
    setContentPane(chartPanel); 
} 

ответ

0

Вы можете отключить Lables и отметки времени, добавив:

CategoryPlot plot = (CategoryPlot) chart.getPlot(); 
CategoryAxis cx = new CategoryAxis(); 
cx.setTickLabelsVisible(false); 
cx.setTickMarksVisible(false); 
plot.setDomainAxis(cx); 

Если вы wantto отображения подмножества меток (каждое энное значение), то вам нужно будет подкласс CategoryAxis так что вы можете overide CategoryAxis#drawCategoryLabels() и CategoryAxis#drawTickMarks()

+0

Проблема в том, что мне нужно показать каждый из этих тиков. Есть ли способ сделать граф горизонтально прокручиваемым? –

+0

Использование панели прокрутки, описанной в [образцах] (http://www.jfree.org/jfreechart/samples.html) – GrahamA

Смежные вопросы