ScatterPlotExample::ScatterPlotExample(WContainerWidget *parent): WContainerWidget(parent) { new WText(WString::tr("scatter plot 2"), this); WStandardItemModel *model = new WStandardItemModel(40, 2, this); model->setItemPrototype(new NumericItem()); model->setHeaderData(0, WString("X")); model->setHeaderData(1, WString("Y = sin(X)")); for (unsigned i = 0; i < 40; ++i) { double x = (static_cast<double>(i) - 20) / 4; model->setData(i, 0, x); model->setData(i, 1, sin(x)); } /* * Create the scatter plot. */ WCartesianChart *chart = new WCartesianChart(this); chart->setModel(model); // set the model chart->setXSeriesColumn(0); // set the column that holds the X data chart->setLegendEnabled(true); // enable the legend chart->setType(ScatterPlot); // set type to ScatterPlot // Typically, for mathematical functions, you want the axes to cross // at the 0 mark: chart->axis(XAxis).setLocation(ZeroValue); chart->axis(YAxis).setLocation(ZeroValue); // Automatically layout chart (space for axes, legend, ...) chart->setAutoLayoutEnabled(); // Add the curves WDataSeries s(1, CurveSeries); s.setShadow(WShadow(3, 3, WColor(0, 0, 0, 127), 3)); chart->addSeries(s); chart->resize(800, 300); // WPaintedWidget must be given explicit size chart->setMargin(10, Top | Bottom); // add margin vertically chart->setMargin(WLength::Auto, Left | Right); // center horizontally ChartConfig *config = new ChartConfig(chart, this); config->setValueFill(ZeroValueFill); }
PieExample::PieExample(WContainerWidget *parent): WContainerWidget(parent) { new WText(WString::tr("pie chart"), this); WStandardItemModel *model = new WStandardItemModel(this); model->setItemPrototype(new NumericItem()); //headers model->insertColumns(model->columnCount(), 2); model->setHeaderData(0, WString("Item")); model->setHeaderData(1, WString("Sales")); //data model->insertRows(model->rowCount(), 6); int row = 0; model->setData(row, 0, WString("Blueberry")); model->setData(row, 1, 120); // model->setData(row, 1, WString("Blueberry"), ToolTipRole); row++; model->setData(row, 0, WString("Cherry")); model->setData(row, 1, 30); row++; model->setData(row, 0, WString("Apple")); model->setData(row, 1, 260); row++; model->setData(row, 0, WString("Boston Cream")); model->setData(row, 1, 160); row++; model->setData(row, 0, WString("Other")); model->setData(row, 1, 40); row++; model->setData(row, 0, WString("Vanilla Cream")); model->setData(row, 1, 120); row++; //set all items to be editable and selectable for (int row = 0; row < model->rowCount(); ++row) for (int col = 0; col < model->columnCount(); ++col) model->item(row, col)->setFlags(ItemIsSelectable | ItemIsEditable); WContainerWidget *w = new WContainerWidget(this); WTableView* table = new WTableView(w); table->setMargin(10, Top | Bottom); table->setMargin(WLength::Auto, Left | Right); table->setSortingEnabled(true); table->setModel(model); table->setColumnWidth(1, 100); table->setRowHeight(22); if (WApplication::instance()->environment().ajax()) { table->resize(150 + 100 + 14, 20 + 6 * 22); table->setEditTriggers(WAbstractItemView::SingleClicked); } else { table->resize(150 + 100 + 14, WLength::Auto); table->setEditTriggers(WAbstractItemView::NoEditTrigger); } /* * Create the pie chart. */ WPieChart *chart = new WPieChart(this); chart->setModel(model); // set the model chart->setLabelsColumn(0); // set the column that holds the labels chart->setDataColumn(1); // set the column that holds the data // configure location and type of labels chart->setDisplayLabels(Outside | TextLabel | TextPercentage); // enable a 3D and shadow effect chart->setPerspectiveEnabled(true, 0.2); chart->setShadowEnabled(true); // explode the first item chart->setExplode(0, 0.3); chart->resize(800, 300); // WPaintedWidget must be given an explicit size chart->setMargin(10, Top | Bottom); // add margin vertically chart->setMargin(WLength::Auto, Left | Right); // center horizontally }