How to display only “last 24 hours” from a “last 72 hours” JFreeChart TimeSeries

前端 未结 1 901
情深已故
情深已故 2021-01-22 20:56

I wrote these 2 lines of code to create a chart using an XYDataset:

final XYDataset dataset = new TimeSeriesCollection(myInfo.getSeries());
JFreeCha         


        
相关标签:
1条回答
  • 2021-01-22 21:31

    Instead of discarding old data, as suggested here, it looks like you want to display a contiguous subset of the data, as if looking through a window. While SlidingCategoryDataset provides this feature for a CategoryDataset, there is no built-in solution for an XYDataset. SlidingXYDataset, seen here, maybe an alternative. In the variation of SliderDemo2 illustrated below, I've added three days of data to a single series with a one day window. I've retained the slider for easy review of earlier values.

    static final int COUNT = 3 * 24 * 60;
    public static final int WINDOW = 24 * 60;
    public static final int FIRST = 2 * 24 * 60;
    …
    this.slider.setValue(FIRST);
    

    As an aside, note that some classes have moved since the patch was submitted:

    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
    

    Can't I just use setMaximumItemAge()?

    Not in isolation; addOrUpdate(), et al., calls removeAgedItems(false) before notifying listeners.

    I am using Second.

    Threes days of Second data, e.g., would imply setMaximumItemAge(3 * 24 * 60 * 60).

    A sliding window might not be available to me since I am saving the chart as a JPEG.

    You can pass the desired firstItemIndex as a parameter to the SlidingXYDataset constructor; you can update the index later via setFirstItemIndex() if needed.

    0 讨论(0)
提交回复
热议问题