Java x轴实时,x轴刻度可调?
我想实现一个趋势图,其中实时数据不断出现,我的时间在x轴上,格式为“HH:MM:SS”。现在我的要求是要有10分钟或15分钟等可调刻度,还有我如何限制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
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 );
}
}