Рендеринг диаграммы за несколько дней с набором данных, который имеет данные за 24 часа, но это полезно только во время M-F, с 7:00 до 17:00. Если я установлю временной ряд с кодом ниже, я получу диаграмму, которая содержит все 24 часа, 7 дней в неделю. Имеет смысл, но не для моего случая использования.
Есть ли способ определить, какой интервал отображает временной ряд? Или мне нужно использовать другой тип диаграммы и пытаться вписать мои данные в регулярные периоды? Я надеюсь, что не последний, в то время как данные, которые я получаю, обычно с 30-секундными интервалами, легко могут быть пробелы.
Довольно невозможно опубликовать 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
}