chart_display::chart_display(chart_dd const& dd) { auto _layout = new Wt::WVBoxLayout; setLayout(_layout); m_model = new Wt::WStandardItemModel(); auto chart = new Wt::Chart::WCartesianChart{}; chart->setBackground(Wt::WColor(220, 220, 220)); chart->setModel(m_model); chart->setXSeriesColumn(0); chart->setLegendEnabled(true); chart->setType(Wt::Chart::ScatterPlot); /* * Provide ample space for the title, the X and Y axis and the legend. */ chart->setPlotAreaPadding(40, Wt::Left | Wt::Top | Wt::Bottom); chart->setPlotAreaPadding(120, Wt::Right); chart->axis(Wt::Chart::Axis::XAxis).setTitle(dd.x_axis_name); chart->resize(500, 400); chart->setMargin(Wt::WLength::Auto, Wt::Left | Wt::Right); _layout->addWidget(chart); auto num_series = dd.series.size(); m_model->insertColumns(0, num_series + 1); std::vector< Wt::Chart::WDataSeries > chart_series; for(size_t i = 0; i < num_series; ++i) { m_model->setHeaderData(i + 1, dd.series[i].name); chart_series.push_back(Wt::Chart::WDataSeries(i + 1, Wt::Chart::LineSeries)); // TODO: configurable: Wt::Chart::PointSeries)); } chart->setSeries(chart_series); }
void WCartesianChart::init() { legendFont_.setFamily(WFont::SansSerif); legendFont_.setSize(WFont::FixedSize, WLength(10, WLength::Point)); setPalette(new WStandardPalette(WStandardPalette::Muted)); //setPreferredMethod(InlineSvgVml); #ifdef WT_TARGET_JAVA for (int i = 0; i < 3; ++i) axes_[i] = WAxis(); #endif //WT_TARGET_JAVA axes_[XAxis].init(this, XAxis); axes_[YAxis].init(this, YAxis); axes_[Y2Axis].init(this, Y2Axis); setPlotAreaPadding(40, Left | Right); setPlotAreaPadding(30, Top | Bottom); }