void visualize_histo(const THisto& input_histo,
                     vtkIdType chart_type = vtkChart::LINE, size_t size_x = 640,
                     size_t size_y = 480) {
  auto chart = chart_from_histogram(input_histo, chart_type);
  // Set up the view
  auto view = vtkSmartPointer<vtkContextView>::New();
  view->GetScene()->AddItem(chart);
  view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);
  view->GetRenderWindow()->SetSize(size_x, size_y);
  view->GetInteractor()->Initialize();
  view->GetInteractor()->Start();
}
Exemplo n.º 2
0
ChartWidget::ChartWidget()
{
    // indexing
    index_ = numChartWidgets_;
    numChartWidgets_++;

    // setup the view
    view_ = vtkSmartPointer<vtkContextView>::New();
    view_->GetRenderer()->SetBackground(1.,1.,1.);
    view_->SetInteractor(GetInteractor());
    SetRenderWindow(view_->GetRenderWindow());

    // create chart and add it to view
    chart_ = vtkSmartPointer<vtkChartXY>::New();
    view_->GetScene()->AddItem(chart_);

    // show legend, by default in the lower left
    chart_->SetShowLegend(true);
    chart_->GetLegend()->SetVerticalAlignment(vtkChartLegend::BOTTOM);
    chart_->GetLegend()->SetHorizontalAlignment(vtkChartLegend::LEFT);

    // don't allow zooming out beyond range of data
    chart_->SetForceAxesToBounds(true);

    // right button zooms (instead of selects)
    chart_->SetActionToButton(vtkChart::ZOOM, vtkContextMouseEvent::RIGHT_BUTTON);

    // create SVG exporter
    svgExporter_ = vtkSmartPointer<vtkGL2PSExporter>::New();

    // use an off-screen constant-sized render window for SVG export
    svgRenderWindow_ = vtkSmartPointer<vtkRenderWindow>::New();
    svgRenderWindow_->OffScreenRenderingOn();
    svgRenderWindow_->SetSize(480, 300);

    svgExporter_->SetRenderWindow(svgRenderWindow_);

    svgExporter_->SetFileFormatToSVG();
    svgExporter_->CompressOff();
    svgExporter_->SetSortToOff();
    svgExporter_->TextAsPathOn();

    // set minimum height
    setMinimumHeight(150);
}