java - 如何从左侧开始时间序列的 JFreeChart XYPlot 图(从 Y 轴开始)

标签 java swing user-interface jfreechart

我正在使用 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;
    }

}

最佳答案

  1. 我在过去添加了一些时间点并缩小,以便它从左边开始并继续

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

  1. 无法完成 AFAIK

关于java - 如何从左侧开始时间序列的 JFreeChart XYPlot 图(从 Y 轴开始),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20063393/

相关文章:

java - 有没有办法最小化 if 和 if-else 条件

java - 如何将列内容设为列名 JTable - MySQL

c++ - 如何在 QListWidget 下添加这样的组按钮?

Java Swing定时器问题

c++ - 如何检查我的 QLabel 中设置了哪个图像?

java - Java:升级到单个窗口

java - 将嵌套的 Pojo 对象作为单独的对象存储在数据库中

java - Median of Medians 算法错误的中位数

java - 如何将应用程序使用统计信息存储在文本文件中?

java - PaintComponent 和 getTableCellRendererComponent 没有被调用