使用重量,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. 動態圖形圖像
- 3. Android圖形,動態視圖
- 4. 爲動態jquery圖形填充變量
- 5. MVC和CanvasJS動態圖表
- 6. jquery和swfobject動態圖表
- 7. 用C++和MFC繪製動態圖形
- 8. 帶matplotlib和psycopg2的動態圖形
- 9. 圖形API和動態訪問令牌
- 10. 動態加載和更改圖形
- 11. 動態圖表或圖表
- 12. Linq到圖表和圖形?
- 13. ExtJS圖表和圖形
- 14. 圖形和圖表庫
- 15. .NET圖表和條形圖
- 16. TensorFlow將圖像張量調整爲動態圖形
- 17. 單動態圖形代碼
- 18. 動態生成圖形PDF?
- 19. 繪製動態圖形
- 20. 動態圖形過濾
- 21. Excel多個動態圖形
- 22. 動態圖形發生器
- 23. 創建動態圖形
- 24. 繪製動態圖形?
- 25. SLD動態圖形尺寸
- 26. 動態生成Html圖形
- 27. 圖形和活動
- 28. 高圖柱形圖動態更新ajax
- 29. 重力形式PDF圖表和圖表JPgraph
- 30. 兩軸變量的動態圖表
謝謝但我該如何更新模型? – user2424276
看圖表示例:http://www.webtoolkit.eu/wt/examples/charts –