QCustomPlot绘图基础
customPlot 是 QCustomPlot实例的指针。如果您已在QtCreator中提升了widget,则可能会通过ui->customPlot
访问相应的widget。
您可以通过 customPlot->addGraph()
创建一个新图形 。然后为图形分配一些数据点,例如通过 customPlot->graph(0)->setData(..)
例如QVector<double> 为x和y(键和值)赋值。QCustomPlot使用键 和值 而不是x 和y的原因 是,在分配哪个轴具有什么作用时允许更大的灵活性。因此,如果将左轴定义为“键 坐标轴”,将底部定义为“值 坐标轴”,则可以绘制在图的左侧竖立的图形。默认情况下,一个QCustomPlot部件有四个轴:customPlot->xAxis
, yAxis
, xAxis2
, yAxis2
,类型为QCPAxis ,对应于下、左、上和右轴。
轴的范围定义了当前可见的绘图部分:customPlot->xAxis->setRange(-1, 1)
要在屏幕上显示对绘图的任何更改,调用 customPlot->replot() 。请注意,replot 函数 在 当调整widget的大小并触发内置用户交互时,将自动发生重新绘制。比如:用户交互例、用鼠标拖动轴范围、用鼠标滚轮缩放。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
输出应如下所示。
刻度和标签是由轴 当前使用的轴刻度器自动选择的。QCPAxisTicker的实例
访问。通过 xAxis->ticker() 获取步长,通过xAxis->ticker()->setTickCount(6) 设置步长
。默认的轴行情指示器非常适合简单的数字显示,但是有专门的类,例如时间跨度,日历日期,类别,pi(或其他符号单位)和对数轴。有关详细信息,请参见QCPAxisTicker文档。
轴的刻度标签(数字)即使到达更宽的范围也永远不会到达小部件边框之外。这是由于自动计算保证的,默认情况下该功能处于打开状态customPlot->axisRect()->setAutoMargins(QCP::msNone)
。如果刻度标签和轴标签需要更多空间,您可以通过手动调整边距。customPlot->axisRect()->setMargins(..)
.
改变图形外观
图形的外观具有许多因素,所有这些因素都可以修改。这里是最重要的:
- 线型(Line style): 调用 graph->setLineStyle(..) 更改线型,线型参见QCPGraph :: LineStyle文档。
- 线笔(Line pen): QPainter框架提供的所有笔都可用,例如,实线,虚线,点划线,不同的宽度,颜色,透明度等。通过
graph->setPen(..) 设置。
- 散点符号(Scatter symbol):调用graph->setScatterStyle(..) 以更改散点符号的外观。有关所有可能的散点样式,请参见QCPScatterStyle文档或介绍页面上显示的散点样式演示屏幕截图。
- 在图形下方或两个图形之间进行填充:QPainter框架提供的所有画笔均可用于图形填充:实体,各种图案,纹理,渐变,颜色,透明度等。通过设置配置的画笔。调用
graph->setBrush(..)。
坐标轴
轴的外观可以通过更改用它们绘制的笔和标签使用的字体来修改。看看QCPAxis的文档。属性的简单总结:setBasePen
,setTickPen
,setTickLength
,setSubTickLength
,setSubTickPen
,setTickLabelFont
,setLabelFont
,setTickLabelPadding
,setLabelPadding
。您可以使用反转轴(例如,使值从左向右减小而不是从左向右增大)setRangeReversed
。如果要在轴端装饰(例如箭头),请使用setLowerEnding
或setUpperEnding
。
网格线
通过访问轴的相应QCPGrid实例可以修改网格。例如,通过访问来更改与左侧轴绑定的水平网格线的外观。网格线的外观基本上是绘制它们的笔,可以通过设置customPlot->yAxis->grid() 刻度线0处的网格线可以用不同的笔绘制,也可以用进行配置。如果您不想使用特殊的笔绘制零线,只需将其设置为,刻度线0处的网格线将使用普通的网格笔绘制。 默认情况下,子网格线设置为不可见。可以使用激活它们。grid()->setSubGridVisible(true)。