Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java x轴实时,x轴刻度可调?_Java_Swing_Jfreechart - Fatal编程技术网

Java x轴实时,x轴刻度可调?

Java x轴实时,x轴刻度可调?,java,swing,jfreechart,Java,Swing,Jfreechart,我想实现一个趋势图,其中实时数据不断出现,我的时间在x轴上,格式为“HH:MM:SS”。现在我的要求是要有10分钟或15分钟等可调刻度,还有我如何限制x轴上的时间值 请帮帮我。 谢谢 import org.jfree.chart.ChartFactory; 导入org.jfree.chart.ChartPanel; 导入org.jfree.chart.JFreeChart; 导入org.jfree.data.general.serieseException; 导入org.jfree.data.t

我想实现一个趋势图,其中实时数据不断出现,我的时间在x轴上,格式为“HH:MM:SS”。现在我的要求是要有10分钟或15分钟等可调刻度,还有我如何限制x轴上的时间值

请帮帮我。 谢谢

import org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.data.general.serieseException;
导入org.jfree.data.time.Second;
导入org.jfree.data.time.TimeSeries;
导入org.jfree.data.time.TimeSeriesCollection;
导入org.jfree.data.xy.XYDataset;
导入org.jfree.ui.ApplicationFrame;
导入org.jfree.ui.RefineryUtilities;
公共类TimeSeries\u AWT扩展了应用程序框架
{
公共时间序列\u AWT(最终字符串标题)
{
超级(标题);
最终XYDataset数据集=createDataset();
最终JFreeChart图表=createChart(数据集);
最终图表面板图表面板=新图表面板(图表);
setPreferredSize(新java.awt.Dimension(560370));
chartPanel.setMouseZoomable(真、假);
setContentPane(图表面板);
}
私有XYDataset createDataset()
{
最终时间序列=新时间序列(“随机数据”);
第二电流=新的第二电流();
双值=100.0;
对于(int i=0;i<4000;i++)
{
尝试
{
value=value+Math.random()-0.5;
系列。添加(当前,新的双(值));
current=(第二)current.next();
}
捕获(系列异常e)
{
System.err.println(“向系列添加错误”);
}
}
返回新的时间体验集合(系列);
}
私有JFreeChart createChart(最终XYDataset数据集)
{
返回ChartFactory.createTimeSeriesChart(
“计算机测试”,
“秒”,
“价值”,
数据集,
假,,
假,,
假);
}
公共静态void main(最终字符串[]args)
{
最终字符串title=“时间序列管理”;
最终TimeSeries\u AWT演示=新TimeSeries\u AWT(标题);
demo.pack();
炼油厂公用设施.定位框架(演示);
demo.setVisible(true);
}
}

如果您看到输出,时间是恒定的,只是静态的,而不是动态的。如果时间是动态更新的,我希望在运行时动态调整刻度或滴答单位,比如在输出图中,刻度时间是5分钟。但我想在运行时控制它,比如10分钟,20分钟,40分钟等等


另一件事是在输出图形中,我们可以在x轴上看到14个值。当图形调整大小时,这些值会自动改变。但我想控制在x轴上看到多少值意味着我想在x轴上显示一些特定的x时间值。在应用程序启动时,这些值也应该是可配置的

本文概述了几种方法。关于你提到的类似问题,@trashgood出现了一个类似的问题,这是我发布的。希望我能找到任何解决方案或线索。@trashgood关于你提到的方法,以我的经验来说似乎很难。在解决我的问题时还有其他帮助吗?示例代码?或任何其他线索,以方便的方式解决?您可以指定间隔如下;我从来没有试过限制数量。
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class TimeSeries_AWT extends ApplicationFrame
{
  public TimeSeries_AWT( final String title )
  {
   super( title );
   final XYDataset dataset = createDataset( );
   final JFreeChart chart = createChart( dataset );
   final ChartPanel chartPanel = new ChartPanel( chart );
   chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 370 ) );
  chartPanel.setMouseZoomable( true , false );
  setContentPane( chartPanel );
 }
 private XYDataset createDataset( )
 {
 final TimeSeries series = new TimeSeries( "Random Data" );
 Second current = new Second( );
 double value = 100.0;
 for (int i = 0; i < 4000; i++)
 {
 try
 {
  value = value + Math.random( ) - 0.5;
  series.add(current, new Double( value ) );
   current = ( Second ) current.next( );
 }
catch(SeriesException e )
  {
   System.err.println("Error adding to series");
  }
 }
  return new TimeSeriesCollection(series);
  }
  private JFreeChart createChart( final XYDataset dataset )
 {
  return ChartFactory.createTimeSeriesChart(
"Computing Test",
  "Seconds",
 "Value",
 dataset,
false,
false,
 false);
 }
  public static void main( final String[ ] args )
 {
   final String title = "Time Series Management";
   final TimeSeries_AWT demo = new TimeSeries_AWT( title );
   demo.pack( );
   RefineryUtilities.positionFrameRandomly( demo );
   demo.setVisible( true );
 }
}