当前位置: 首页 > 面试题库 >

实时图绘制开始时间

刁丰羽
2023-03-14
问题内容

这是基于@trashgod的有关实时绘图的示例的代码:

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.DynamicTimeSeriesCollection;
import org.jfree.data.time.Second;

/**
 * @see https://stackoverflow.com/a/21307289/230513
 */
public class DynamicTimeSeriesChart extends JPanel {

private static final long serialVersionUID = 5128935838291298041L;
private final DynamicTimeSeriesCollection dataset;
private final JFreeChart chart;

public DynamicTimeSeriesChart(final String title) {
    dataset = new DynamicTimeSeriesCollection(1, 1000, new Second());
    dataset.setTimeBase(new Second(0, 0, 0, 1, 1, 2014));
    dataset.addSeries(new float[1], 0, title);
    chart = ChartFactory.createTimeSeriesChart(
        title, "Time", title, dataset, true, true, false);
    final XYPlot plot = chart.getXYPlot();
    DateAxis axis = (DateAxis) plot.getDomainAxis();
    axis.setFixedAutoRange(10000);
    axis.setDateFormatOverride(new SimpleDateFormat("ss.SS"));
    final ChartPanel chartPanel = new ChartPanel(chart);
    add(chartPanel);
}

public void update(float value) {
    float[] newData = new float[1];
    newData[0] = value;
    dataset.advanceTime();
    dataset.appendData(newData);
}

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            JFrame frame = new JFrame("testing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            final DynamicTimeSeriesChart chart
                = new DynamicTimeSeriesChart("Alternating data");
            frame.add(chart);
            frame.pack();
            Timer timer = new Timer(1000, new ActionListener() {
                private boolean b;

                @Override
                public void actionPerformed(ActionEvent e) {
                    chart.update(b ? 1 : 0);
                    b = !b;
                }
            });
            timer.start();
            frame.setVisible(true);
        }
    });
}
}

运行Java之后,尽管new Seconds从0开始,但是我仍然不明白为什么图形从40秒开始?遍历代码;找不到任何要在40秒后开始的设置。

另外,如何向后滚动图形以查看以前的数据。


问题答案:

该图在构造Second传递到的日期的午夜之后的16分40秒处开始setTimeBase()。这是在nMoments构造函数参数中指定的相同的1000个间隔,每个间隔一秒。在给定的时间设置为午夜的情况下,获取基于零的显示的一些可能选择。

  1. 使nMoments的整数倍60

    dataset = new DynamicTimeSeriesCollection(1, 960, new Second());
    

    dataset.setTimeBase(new Second(0, 0, 0, 1, 1, 2014));

  2. 减去nMoments名义基准日期。

    int nMoments = 1000;
    

    dataset = new DynamicTimeSeriesCollection(1, nMoments, new Second());
    Calendar c = Calendar.getInstance();
    c.setTime(new Date(0));
    c.add(Calendar.SECOND, -nMoments);
    dataset.setTimeBase(new Second(c.getTime()));


Either approach yields the same display.

image



 类似资料:
  • 问题内容: 我以两个数组获取一些数据:一个用于时间,另一个用于值。当我达到1000点时,我会触发信号并绘制这些点(x =时间,y =值)。 我需要保持与之前相同的图形,但只有一个合理的数字才能避免减慢处理速度。例如,我想在图表上保留10,000点。matplotlib交互式绘图工作正常,但是我不知道如何删除第一个点,这会很快减慢计算机速度。我查看了matplotlib.animation,但它似乎

  • 本文向大家介绍C# 绘制实时折线图,波形图,包括了C# 绘制实时折线图,波形图的使用技巧和注意事项,需要的朋友参考一下 此Demo是采用VS自带的Chart图表控件,制作实时动态显示的折线图,和波形图。本文仅供学习分享使用,如有不足之处,还请指正。 涉及知识点: Chart 控件,功能强大,可以绘制柱状图,折线图,波形图,饼状图,大大简化了对图的开发与定制。     Chart控件的相关概念: C

  • 我试着用plotly绘制一个gannt图。重要的是,水平泳道可以有多个横杆在时间上分开。 我发现了一个使用日历日期(YYYY-MM-DD)的例子,并尝试使用时间(HH:MM:SS)进行转换。但是当我使用时间戳时,所有的东西都聚集在一起,没有间隙。

  • 问题内容: 我有一个应用程序,该应用程序每秒更新一次变量约5到50次,并且我正在寻找某种实时绘制此变化的连续XY图的方法。 尽管不建议使用JFreeChart来获得如此高的更新速率,但是许多用户仍然说它适用于他们。我尝试使用此演示并将其修改为显示随机变量,但似乎一直都在使用100%的CPU。即使我忽略了这一点,我也不希望限于JFreeChart的ui类来构造表单(尽管我不确定其功能到底是什么)。可

  • 这是如何与datetime一起工作的?我不能绘图日期时间x日期时间对象?这个问题是由于在y轴上绘制“小时/分钟”时的一些问题,它变得混乱。 在这个例子中,我的小时图从11:13开始,到10:54结束,但是范围是08:33到11:55 在matplotlib中打印时,它可以识别范围(我想要的),但在dash中,它会创建一个从最低值到最高值的阶梯 是的,我已经尝试过'yax':{tickform:'%

  • 我在CSV文件中有一些数据,想打印出来,但图形没有显示出来 这是CSV文件http://www.mediafire.com/file/2gtbxm5adom7m4j/pop.csv