2013-11-19 1 views
4

Я использую JFreechart для отображения графика, который изменяется со временем. Но значения добавляются справа от графика.Как запустить график JFreeChart XYPlot временного ряда слева (начиная с оси Y)

  1. Я хочу, чтобы график начинался слева и останавливался в какой-то момент справа.
  2. Кроме того, я хочу, чтобы часть линии графика была сплошной, а часть ее была пунктирной.
  3. Я хочу наложить некоторые другие графики, такие как гистограмма.

Как это сделать? Код:

import java.awt.Color; 
import java.awt.Dimension; 

import javax.swing.JPanel; 

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.axis.ValueAxis; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.renderer.xy.DefaultXYItemRenderer; 
import org.jfree.chart.renderer.xy.XYItemRenderer; 
import org.jfree.data.time.Millisecond; 
import org.jfree.data.time.TimeSeries; 
import org.jfree.data.time.TimeSeriesCollection; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RectangleInsets; 
import org.jfree.ui.RefineryUtilities; 

public class MySCCE extends ApplicationFrame { 

    static Class class$org$jfree$data$time$Millisecond; 
    public MySCCE(String title) { 
     super(title); 
     setContentPane(new DemoPanel()); 
    } 
    static class DemoPanel extends JPanel { 
     DemoPanel() { 
      TimeSeries series1; 
      series1 = new TimeSeries("ICP", (MySCCE.class$org$jfree$data$time$Millisecond = MySCCE.class$("org.jfree.data.time.Millisecond"))); 

         TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(series1); 

      JFreeChart jfreechart = ChartFactory.createTimeSeriesChart("Data Monitoring", "Time", "mm Hg", timeseriescollection, true, true, true); 

         jfreechart.getTitle().setPaint(Color.green); 
      jfreechart.setBackgroundPaint(Color.black); 
      XYPlot xyplot = (XYPlot)jfreechart.getPlot(); 
      xyplot.setBackgroundPaint(Color.BLACK); 
      xyplot.setDomainGridlinePaint(Color.green); 
      xyplot.setRangeGridlinePaint(Color.white); 
      xyplot.setAxisOffset(new RectangleInsets(4D, 4D, 4D, 4D)); 
      ValueAxis valueaxis = xyplot.getDomainAxis(); 
      valueaxis.setAutoRange(true); 
      valueaxis.setFixedAutoRange(20000D); 
         XYItemRenderer renderer = xyplot.getRenderer(); 

         renderer.setSeriesPaint(2, Color.GREEN); 


      xyplot.setRenderer(1, new DefaultXYItemRenderer()); 
      xyplot.mapDatasetToRangeAxis(1, 1); 
      ChartPanel chartpanel = new ChartPanel(jfreechart); 
      add(chartpanel); 
      double d1 = 10D * Math.random() - 5; 
      try { 
       Thread.sleep(1000, 0); 
       series1.add(new Millisecond(), d1); 
       d1 = 10D * Math.random() - 5; 
       Thread.sleep(1000, 0); 
       series1.add(new Millisecond(), d1); 
       d1 = 10D * Math.random() - 5; 
       Thread.sleep(1000, 0); 
       series1.add(new Millisecond(), d1); 
       d1 = 10D * Math.random() - 5; 
       Thread.sleep(1000, 0); 
       series1.add(new Millisecond(), d1); 

      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      chartpanel.setPreferredSize(new Dimension(1000, 570)); 
     } 
    } 
    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     MySCCE myscce = new MySCCE(""); 
     myscce.pack(); 
     RefineryUtilities.centerFrameOnScreen(myscce); 
     myscce.setVisible(true); 
    } 

    static Class class$(String s) 
    { 
     Class clazz=null; 
     try { 
      clazz= Class.forName(s); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
     return clazz; 
    } 

} 
+0

Это 'TimeSeries' жулик structor устарел; используйте javax.swing.Timer для ускорения анимации; см. также этот [пример] (http://stackoverflow.com/a/5048863/230513); см. также [* Начальные темы *] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html). – trashgod

ответ

0
  1. Я добавил некоторые моменты времени в прошлом, и масштабом изображением так, что она начинается с левого и продолжает

2.Had расширить существующие классы графика XY с моим собственным

  1. не удалось сделать AFAIK