【问题标题】:How can I start JFreeChart XYPlot graph of a timeseries from the left(starting from Y axis)如何从左侧开始时间序列的 JFreeChart XYPlot 图(从 Y 轴开始)
【发布时间】:2013-11-19 04:46:05
【问题描述】:

我正在使用 JFreechart 来显示随时间变化的图形。但是这些值被添加到图表的右侧。

  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;
    }

}

【问题讨论】:

  • 不推荐使用 TimeSeries 构造函数;使用javax.swing.Timer 调整动画速度;另见example;另见Initial Threads

标签: java swing user-interface jfreechart


【解决方案1】:
  1. 我在过去添加了一些时间点并缩小,使其从左侧开始并继续

2.必须用我自己的扩展 XYPlot 现有类

  1. AFAIK 无法完成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多