使用重量,C库为Web开发,我想上传一个.wav文件,然后在图表中打印出它的价值。有没有办法做到这一点,换句话说,要添加点到已经创建的图表?重量动态图表和图形
回答
我认为当你有一个模型,并更新该模型,自动更新视图中的图表。
创建自己的模型,做你的业务逻辑存在。让Wt处理图形视图。
是的,是有办法做到这一点,我曾经写过一些代码来监视内存的使用和打印图表中的信息,就像在Windows任务管理器的性能选项卡。我使用了一个增强线程来持续更新它。以下是一些代码,可能会使您的图表问题朝着正确的方向发展。
您将需要一个WCartesianChart
Wt::Chart::WCartesianChart* _chart_memory_display;
现在,图表初始化实际上是相当棘手的。我写了一个功能来做到这一点。 注意:这使用#define PERFORMANCE_HISTORY 100这是图表存储的数据量,据我所知没有限制,我只想要最后的100个点。
Wt::Chart::WCartesianChart* CreateCartesianChart(WContainerWidget* parent)
{
WStandardItemModel *model = new WStandardItemModel(PERFORMANCE_HISTORY, 2, parent);
//Create the scatter plot.
Wt::Chart::WCartesianChart* chart = new Wt::Chart::WCartesianChart(parent);
//Give the chart an empty model to fill with data
chart->setModel(model);
//Set which column holds X data
chart->setXSeriesColumn(0);
//Get the axes
Wt::Chart::WAxis& x_axis = chart->axis(Wt::Chart::Axis::XAxis);
Wt::Chart::WAxis& y1_axis = chart->axis(Wt::Chart::Axis::Y1Axis);
Wt::Chart::WAxis& y2_axis = chart->axis(Wt::Chart::Axis::Y2Axis);
//Modify axes attributes
x_axis.setRange(0, PERFORMANCE_HISTORY);
x_axis.setGridLinesEnabled(true);
x_axis.setLabelInterval(PERFORMANCE_HISTORY/10);
y1_axis.setRange(0, 100);
y1_axis.setGridLinesEnabled(true);
y1_axis.setLabelInterval(10);
y2_axis.setRange(0, 100);
y2_axis.setVisible(true);
y2_axis.setLabelInterval(10);
//Set chart type
chart->setType(Wt::Chart::ChartType::ScatterPlot);
// Typically, for mathematical functions, you want the axes to cross at the 0 mark:
chart->axis(Wt::Chart::Axis::XAxis).setLocation(Wt::Chart::AxisValue::ZeroValue);
chart->axis(Wt::Chart::Axis::Y1Axis).setLocation(Wt::Chart::AxisValue::ZeroValue);
chart->axis(Wt::Chart::Axis::Y2Axis).setLocation(Wt::Chart::AxisValue::ZeroValue);
// Add the lines
Wt::Chart::WDataSeries s(1, Wt::Chart::SeriesType::LineSeries);
chart->addSeries(s);
//Size the display size of the chart, has no effect on scale
chart->resize(300, 300);
return chart;
}
基本上,WT图表需要一个模型和数据系列准备接收数据。我强烈建议您阅读文档关于该功能的任何你不认识的事情,我花了一些时间把它们放在一起。另外,请查看WT小部件库,它有图表和代码示例。
现在,实际的更新,我写了另一个功能。现在
void UpdateChartDisplay(Wt::WAbstractItemModel* data_model, double data)
{
//Update the old data
for(unsigned int i = 0; i < PERFORMANCE_HISTORY; i++)
{
//Move all data back one index
data_model->setData(i, 0, i);
data_model->setData(i, 1, data_model->data(i+1, 1));
}
//Get the last index of the data
int insertion_point = PERFORMANCE_HISTORY - 1;
//Insert new data at the last index
data_model->setData(insertion_point, 0, insertion_point);
data_model->setData(insertion_point, 1, data);
}
,该data_model是正在更新图表的只是模型,
_chart_memory_display->model()
双进来,是被添加到图表的数据本身。我有一个boost线程每秒都会调用这个函数传递新数据,它看起来和运行时的任务管理器完全一样。我不确定你是否试图动态更新它,或者只是用数据填充它,但我希望这可以帮助你,并把你放在正确的轨道上!
非常感谢。我一直在努力处理Wt的例子,这些例子太复杂了 - 他们应该提供一个非常简单的工作例子。我发现的Wt文档非常密集,似乎没有解释如何一步一步地做简单的事情。如果你知道一些文档,请告诉我。我喜欢Wt,并且在加快速度的时候遇到了很多问题,并且有许多其他GUI框架的经验。但制图的东西是讨厌的。 – Vector
我发现的唯一可靠的文档是他们的标准文档http://www.webtoolkit.eu/wt/doc/reference/html/index.html和小部件库。他们还有一个官方论坛http://redmine.webtoolkit.eu/projects/wt/boards,您可以在这里向社区或开发者发布问题。你也可以要求开发者的功能,其实我有一个不久前批准的功能:D功能#3175 http://redmine.webtoolkit.eu/issues/3175#change-9919 除此之外,我只是谷歌或挖通过堆栈溢出。 – user2115945
我见过最多的东西 - 谢谢。除此之外,我只是Google或通过Stack Overflow_挖掘:大多数情况下,我只是继续黑客攻击,直到我找到工作。经过Qt和gtkmm的努力,我发现Wt在大多数时间都非常优雅和直观 - 我起床并且运行得非常快。但是图表是令人讨厌的 - 并不是说它在其他框架中好得多 - 好的图表本质上是复杂的,特别是如果您正在使用它们进行实时更新。真正缺乏的是一本关于Wt的好书,它组织事物并引导你。我喜欢Wt - 非常强大的东西。 – Vector
- 1. MFC和图表库/矢量图形?
- 2. Android图形,动态视图
- 3. 为动态jquery图形填充变量
- 4. MVC和CanvasJS动态图表
- 5. jquery和swfobject动态图表
- 6. Morris.js和datepicker动态图表
- 7. 动态加载和更改图形
- 8. 图形API和动态访问令牌
- 9. 用C++和MFC绘制动态图形
- 10. 带matplotlib和psycopg2的动态图形
- 11. 动态图表或图表
- 12. JavaScript图表和图形
- 13. ExtJS图表和图形
- 14. .NET图表和条形图
- 15. Linq到图表和图形?
- 16. TensorFlow将图像张量调整为动态图形
- 17. 绘制动态图形
- 18. 创建动态图形
- 19. 动态生成Html图形
- 20. 动态图形过滤
- 21. SLD动态图形尺寸
- 22. 绘制动态图形?
- 23. 动态生成图形PDF?
- 24. 动态图形发生器
- 25. 图形和活动
- 26. 高图柱形图动态更新ajax
- 27. 重力形式PDF图表和图表JPgraph
- 28. 两轴变量的动态图表
- 29. 图形布局和重排
- 30. Highcharts动态更新的Highstock图表不显示条形图
谢谢但我该如何更新模型? – user2424276
看图表示例:http://www.webtoolkit.eu/wt/examples/charts –