【问题标题】:JavaFX real-time LineChart with time axis带时间轴的 JavaFX 实时 LineChart
【发布时间】:2012-10-15 09:21:18
【问题描述】:

我正在尝试绘制带有时间轴的实时图表,但我发现LineChart 构造函数只有签名。

LineChart(Axis<X> xAxis, Axis<Y> yAxis)  

我认为在 javafx 中嵌入 jfree 图表不是一个合适的解决方案。

我想要 javafx LineChart 中的一些 jfree 功能,这可能吗?

【问题讨论】:

  • 好问题!有用的答案!可怕的版主!为什么用有效的答案来结束完美的问题?我很高兴在搜索中仍然出现封闭的问题。

标签: java charts jfreechart javafx-2


【解决方案1】:

从http://www.oracle.com/technetwork/java/javafx/samples/index.html下载 Ensemble 示例

其中有几个用于动态图表的示例,例如“高级股票折线图”。您可以直接在应用程序中查看他们的源代码。

要在轴上显示时间,您可以使用字符串和 DateFormatter:

    BarChart<String, Number> chart = new BarChart<>(new CategoryAxis(), new NumberAxis());

    final XYChart.Series<String, Number> series1 = new XYChart.Series<>();
    chart.getData().addAll(series1);

    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    Date date = new Date();
    for (int i = 0; i <= 10; i += 1) {
        date.setTime(date.getTime() + i * 11111);
        series1.getData().add(new XYChart.Data(dateFormat.format(date), Math.random() * 500));
    }

【讨论】:

  • 是的,这段代码很好,但问题是我想在时间轴上显示实时而不是增量值!!!
  • 正是...这就是我想要的
  • 这里如何设置时间范围?我的意思是,我只想要最后十分钟。有没有办法做到这一点?
  • 问题是,您必须为没有价值的时间填补缺失的类别。否则,您可能会有这样的类别:4:00、11:00、12:00,并且它们彼此之间的距离相同。如果没有时间序列支持,JavaFx 图表真的很糟糕。
【解决方案2】:

类org.jfree.chart.demo.TimeSeriesChartDemo1 包含在分发中。它在demo 中被描绘,它的source 说明了工厂方法ChartFactory.createTimeSeriesChart() 的使用。有一个相关的例子here。

【讨论】:

  • 我认为你应该使用createTimeSeriesChart()。
  • @ShantanuBanerjee:jfreechart 与 javafx 一起使用;更改模型,例如TimeSeries,视图会自行更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多