当前位置: 首页 > 知识库问答 >
问题:

从存储在ArrayList中的数据动画蜡烛棒图表

任昊苍
2023-03-14

我有一秒钟的烛台数据存储在“BarData”对象的数组列表中,其中包含打开、高、低和关闭数据以及时间戳。我将这些数据聚合成5分钟的条形图,并在定制的JavaFX XYChart上显示数据以生成蜡烛。

聚合代码运行良好,我可以显示从1秒条创建的5分钟条。

现在,我想用列表中的24300组1秒数据来制作5分钟图表的动画,这样我就可以像回放实时市场数据源一样回放数据。

我试着使用时间线,但我很挣扎。是否需要为序列数据的每次更新创建一个关键帧?

这是一个工作循环,它将子列表中的1秒钟数据聚合成一个5分钟的图表。有人能告诉我如何制作这个动画吗?

        for (BarData bar : sublist) 
        {
           String label = "";
           if ((bar.getDateTime().getMinute()%5 == 0) && bar.getDateTime().getSecond() == 0)
           {
              label = dtf.format(bar.getDateTime());
              series.getData().add(new XYChart.Data<>(label, bar.getOpen(), bar));
           }
           else
           {
              // Just updating values so no need to update label.
              int idxOfLastBarInList = series.getData().size()-1;
              XYChart.Data<String, Number> data = series.getData().get(idxOfLastBarInList);
              BarData prevBar = (BarData)(data.getExtraValue());
              prevBar.update(bar); // Modifies bar based on new bar data.
              data.setExtraValue(prevBar);
              series.getData().set(idxOfLastBarInList, data);
           }
        }

该图表最终如下所示:

样本图表

共有1个答案

魏鸿哲
2023-03-14

经过一些工作,我意识到:

series.getData().set(idxOfLastBarInList, data);

不能强制图表重绘柱状图。为了让栏立即更新,我不得不删除栏,然后重新添加栏。这似乎是一个奇怪的变通方法,但它确实有效。如果有人有更好的答案,我很乐意听到。

series.getData().remove(idxOfLastBarInList);
series.getData().add(new XYChart.Data<>(label, prevBar.getOpen(), prevBar));

用删除后的添加替换设置代码确保了我的蜡烛被重新绘制。

 类似资料:
  • 我试图在JFreeChart中生成一个图表,它由叠加的烛台图和Timeseries图组成。(有点像这样) 我曾尝试创建烛台图表,然后添加额外的XY系列和it渲染器,但这导致运行时错误 我的代码片段如下 如有任何意见,将不胜感激

  • 我在MPAndroidChart_GITHUB中使用了3.1.0版本 我试过这个代码 activity_test.xml 首先,更改文件是布局xml activity.java 但这太奇怪了

  • 大多数财务图表库使用一些规则来为蜡烛着色: 如果<代码>关闭 jFreeChart似乎有自己的着色规则,可以更改它们。默认情况下,该图表如下所示(某些颜色已更改): 如您所见,可以更改蜡烛、背景、绘图边框等的颜色。 我想在图表中实现规则1和2(上面)。可能吗? 结果应该是这样的: 这是我目前在示例中使用的烛台: 似乎只需将设置为并绘制颜色不变即可。 但主要问题仍然存在: > 在jFreeChart

  • 我正在创建一个web应用程序,它有一个用户对象,每个用户对象都有一个需要存储到mySQL数据库表中的对象(食物)的ArrayList。我想将整个ArrayList存储到一列中。将其存储为Json会更好吗?或者我应该为每个用户创建一个表来存储ArrayList的各个项目吗?我唯一的问题是数据会被频繁编辑。 编辑:我有供用户和食物使用的桌子。其想法是,用户将食物表中的食物添加到他们的ArrayList

  • 我是android studio的初学者,希望在room数据库中存储语言数组列表。有人能建议我怎么做吗?

  • 我正在尝试使用put方法将arraylist存储在hashmap中。我在下一步中清除了列表,以便在下一次迭代中添加下一组值。一旦清除列表,地图中的值也会被清除。虽然我在清理清单之前已经把清单放在地图上了。 sysout打印{key=[]} 有人请让我清楚如何坚持hashmaphash地图。