Qt - Как определить интервалы оси на QCustomPlot?

Я использую QCustomPlot в Qt для построения аспектов видеоряда.

Я хотел бы определить фон моего графика, чтобы определить определенные зоны вдоль моего yAxis. Мой график таков:

Мой сюжет (пример)

И я хотел бы определить интервалы в моем yAxis, чтобы получить что-то вроде этого:

введите здесь описание изображения

Последнее изображение принадлежит программе под названием PEAT, используемой для анализа видео, которые могут вызвать приступы эпилепсии. Я указываю на то, как они определяют зоны вдоль yAxis.

Какие-либо предложения?


person NelsonR    schedule 02.09.2014    source источник


Ответы (1)


Чтобы иметь область на графике, вы можете добавить два графика, которые определяют границы области:

  //Upper bound
  customPlot->addGraph();
  QPen pen;
  pen.setStyle(Qt::DotLine);
  pen.setWidth(1);
  pen.setColor(QColor(180,180,180));
  customPlot->graph(0)->setName("Pass Band");
  customPlot->graph(0)->setPen(pen);
  customPlot->graph(0)->setBrush(QBrush(QColor(255,50,30,20)));

  //Lower bound
  customPlot->addGraph();
  customPlot->legend->removeItem(customPlot->legend->itemCount()-1); // don't show two     Band graphs in legend
  customPlot->graph(1)->setPen(pen);

Затем вы можете заполнить область между границами, используя setChannelFillGraph :

  customPlot->graph(0)->setChannelFillGraph(customPlot->graph(1));

Также не забудьте присвоить соответствующие значения границам:

  QVector<double> x(250);
  QVector<double> y0(250), y1(250);

  for (int i=0; i<250; ++i)
  {
      x[i] = i ;
      y0[i] = upperValue;

      y1[i] = lowerValue;

  }
  customPlot->graph(0)->setData(x, y0);
  customPlot->graph(1)->setData(x, y1);

Вы также можете добавить другие графики, чтобы показать некоторые границы, как в вашем примере.

person Nejat    schedule 02.09.2014
comment
Большое спасибо за ответ, ваше предложение решает мою проблему. Но я не могу показать текст Pass Band на построенном графике, есть идеи, почему это происходит? - person NelsonR; 02.09.2014
comment
@NelsonR Назначенное имя в примере показано в легенде. Чтобы отобразить текст на построенном графике, вы должны использовать QCPItemText. Пример см. на странице qcustomplot.com/index.php/tutorials/items. - person Nejat; 02.09.2014
comment
Спасибо за вашу помощь, пример, который вы предложили, работал просто отлично. - person NelsonR; 03.09.2014