QCustomPlot(二):图形绘制基础

本文为QCustomPlot官方教程的中文翻译版。
本教程使用customPlot 指针指向 QCustomPlot 实例。如果您在 QtCreator 中提升了一个小部件,可以通过 ui->customPlot (或您为小部件指定的任何名称)访问相应的小部件。

您可以通过customPlot->addGraph()在图中创建一个新图形 。然后,通过customPlot->graph(0)->setData(..)为图形分配一些数据点,例如以两个QVector的形式表示 x 和 y ()。QCustomPlot 使用术语 而不是xy的原因是为了允许更灵活地分配哪个轴具有什么作用。因此,如果您将左轴定义为“关键轴”,将底部定义为“值轴”,您可以在图的左侧绘制一个直立的图形。默认情况下,QCustomPlot 小部件有四个轴:customPlot->xAxis, yAxis, xAxis2, 和 QCPAxis类型的yAxis2
,对应于下、左、上、右轴。它们的范围定义了绘图的哪个部分当前可见:customPlot->xAxis->setRange(-1, 1)。

要对绘图进行任何类型的更改,请调用customPlot->replot() 。请注意,当小部件调整大小和触发内置用户交互时,将自动发生重新绘制。例如用鼠标拖动轴范围和用鼠标滚轮缩放这样的用户交互。

// generate some data:
QVector x(101), y(101); // initialize with entries 0..100
for (int i=0; i<101; ++i)
{
  x[i] = i/50.0 - 1; // x goes from -1 to 1
  y[i] = x[i]*x[i]; // let's plot a quadratic function
}
// create graph and assign data to it:
customPlot->addGraph();
customPlot->graph(0)->setData(x, y);
// give the axes some labels:
customPlot->xAxis->setLabel("x");
customPlot->yAxis->setLabel("y");
// set axes ranges, so we see all data:
customPlot->xAxis->setRange(-1, 1);
customPlot->yAxis->setRange(0, 1);
customPlot->replot();

输出应如下所示。

刻度步长和标签由轴当前使用的轴刻度自动选择 。这是 类型QCPAxisTicker的一个实例,可以通过如xAxis->ticker().访问。您可以通过 xAxis->ticker()->setTickCount(6)调整ticks 数量,ticker 尝试创建的大致ticks 数量。默认轴标记非常适合简单的数字显示,但也有专门的类,例如时间跨度、日历日期、类别、pi(或其他符号单位)和对数轴。有关详细信息,请参阅 QCPAxisTicker文档。

轴的刻度标签(数字)永远不会超出小部件边框,即使它们变宽也是如此。这是由于默认启用的自动页边距计算。如果刻度标签和轴标签需要更多空间,它会使轴矩形缩小。如果您不希望自动确定边距,请通过调用customPlot->axisRect()->setAutoMargins(QCP::msNone)禁用该行为。然后您可以通过 customPlot->axisRect()->setMargins(..).手动调整边距。

QCustomPlot(一):基础
QCustomPlot(三):图形绘制基础之样式修改

你可能感兴趣的:(QCustomPlot(二):图形绘制基础)