Используя Wt, библиотеку C для веб-разработки, я пытаюсь загрузить WAV-файл, а затем распечатать его значения в диаграмме. Есть ли способ сделать это динамически, другими словами, добавить точки в уже созданную диаграмму?Wt Динамические диаграммы и графики
ответ
Я думаю, что когда у вас есть модель, и вы обновляете эту модель, график автоматически обновляется как представление.
Создайте свою собственную модель и выполните свою бизнес-логику. Пусть 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 требуется модель, а серия данных должна быть готова к приему данных. I настоятельно рекомендую прочитать документацию на что-либо в этой функции, которую вы не узнаете, мне потребовалось некоторое время, чтобы собрать кусочки. Кроме того, проверьте галерею виджета 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, и у меня очень мало проблем с тем, чтобы справиться с этим, имея опыт работы со многими другими графическими интерфейсами. Но графический материал неприятен. – Vector
Единственная твердая документация, которую я нашел, - это их стандартные документы здесь http://www.webtoolkit.eu/wt/doc/reference/html/index.html и галерея виджета. У них также есть официальный форум http://redmine.webtoolkit.eu/projects/wt/boards, где вы можете публиковать вопросы сообществу или разработчикам. Вы также можете запросить функции у разработчиков, на самом деле я получил одобрение не так давно: D Feature # 3175 http://redmine.webtoolkit.eu/issues/3175#change-9919 Кроме этого, я просто Google или копаю через переполнение стека. – user2115945
Я видел большую часть этого материала - спасибо. _Другая, я просто Google или выкапываю Stack Overflow_: В основном я просто продолжаю взламывать, пока не получу что-то для работы.Много работая с Qt и gtkmm, я считаю, что Wt будет довольно элегантным и интуитивно понятным в большинстве случаев - я быстро встал и работал очень быстро. Но диаграмма противна - не то, что она намного лучше в других рамках - хорошие диаграммы по своей сути сложны, особенно если вы делаете в реальном времени обновление с ними. Чего не хватает - хорошая книга о Wt, которая организует вещи и проводит вас. Я люблю Wt - очень мощный материал. – Vector
- 1. Интерактивные и динамические графики/диаграммы в clojure
- 2. Динамические диаграммы или графики в PDF
- 3. Динамические графики и DOMPDF
- 4. JSP диаграммы и графики
- 5. Графики и диаграммы
- 6. Динамические диаграммы Jfreechart
- 7. Графики чертежей (диаграммы) в JSF
- 8. Bootstrap Отзывчивые диаграммы и графики
- 9. Графики и диаграммы из Excel
- 10. Компоненты GUI, графики и диаграммы.
- 11. Динамические графики SSRS
- 12. Morris.js и динамические диаграммы datepicker
- 13. Google диаграммы многострочные динамические диаграммы
- 14. .NET WPF Диаграммы/графики
- 15. Графики/диаграммы в Android
- 16. Wt Database Wt :: Dbo
- 17. Google графики динамические значки устарели. Альтернативы?
- 18. Довольно графики и диаграммы в Python
- 19. Гравитационные формы PDF-графики и диаграммы JPgraph
- 20. Динамические круговые диаграммы
- 21. Динамические диаграммы пирога
- 22. Динамические диаграммы в ActiveReports
- 23. Динамические диаграммы VueJS Цвета
- 24. Графики Google: позиция заголовка диаграммы
- 25. Графики ExtJS5 - расширение декартовой диаграммы
- 26. Динамические диаграммы, использующие диаграммы и угловые с ng-повторением
- 27. Динамические диаграммы с jquery и swfobject
- 28. Динамические диаграммы с MVC и CanvasJS
- 29. Динамические диаграммы в Google Line
- 30. Динамические диаграммы с точки опоры
Спасибо, но как я могу обновить модель? – user2424276
Посмотрите на примеры диаграмм: http://www.webtoolkit.eu/wt/examples/charts –