gpt4 book ai didi

java - 将 JFreeChart TimeSeries 限制为工作时间

转载 作者:行者123 更新时间:2023-11-30 05:43:19 26 4
gpt4 key购买 nike

使用包含 24 小时数据的数据集渲染几天的图表,但它仅在周一到周五、上午 7 点到下午 5 点期间有用。如果我使用下面的代码设置时间序列,我会得到一个包含每周 7 天、24 小时的图表。有道理,但不适合我的用例。

有没有办法定义时间序列显示的间隔?或者我是否需要使用不同的图表类型并尝试将我的数据纳入定期周期?我希望不是后者,虽然我收到的数据通常以 30 秒为间隔,但很容易存在间隙。

发布工作 UI 的 SSCE 以及动态向服务器请求数据的图表几乎是不可能的,但下面的一些要点可以帮助您了解我正在使用的图表类型。

一些plot.add、CombinedDomainXY、索引0代码可能看起来很奇怪。我有三个带有共享时间值的子图,为了保持简短,我将其缩减为一个。我认为有一种方法可以满足我对一个图的需要,它适用于具有多个子图的图表。

public ChartPanel extends JPanel
{
private final MyDataset _myDataset = new MyDataset();
private final XYPlot _myPlot = new XYPlot();
_chartPanel = new ChartPanel( createChart() );
private JFreeChart createChart()
{
CombinedDomainXYPlot plot = new CombinedDomainXYPlot(
timeAxis );
plot.setGap( 10.0 );
plot.setDomainPannable( true );

plot.setDataset( index, dataset );
NumberAxis axis = new NumberAxis();

axis.setAutoRangeIncludesZero( false );
plot.setRangeAxis( 0, axis );
plot.setRangeAxisLocation( 0, axisLocation );
plot.setRenderer( 0, new StandardXYItemRenderer() );
plot.mapDatasetToRangeAxis( 0, index );

// add the subplots...
plot.add( _myPlot, 1 );
}
}
public class MyDataset implements XYDataset
{
@Override
public double getYValue( int series, int item )
{
return getMyData(item);
}
@Override
public double getXValue( int series, int item )
{
return _bars.get( item ).DateTime.toInstant().toEpochMilli();
}
//other basic overloaded methods left out for brevity
}

最佳答案

您也许可以使用DateAxis与定制TimelineSegmentedTimeline ,检查here ,是具体的实现;虽然deprecated ,它可以作为一个指南。基于此example ,您的名义 newWorkdayTimeline() 可能如下所示:

public static SegmentedTimeline newWorkdayTimeline() {
SegmentedTimeline timeline = new SegmentedTimeline(
SegmentedTimeline.HOUR_SEGMENT_SIZE, 10, 14);
timeline.setStartTime(SegmentedTimeline.firstMondayAfter1900()
+ 7 * timeline.getSegmentSize());
timeline.setBaseTimeline(SegmentedTimeline.newMondayThroughFridayTimeline());
return timeline;
}

这个example说明了一种减轻您遇到的渲染伪影的方法。

关于java - 将 JFreeChart TimeSeries 限制为工作时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55284870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com