我QwtPlotBarChart用来绘制直方图.我已经设置了图表,以便条形之间没有间距,我的xBottom轴具有实际的数据范围.
样品在图表上使用a QVector设置QPointF,x值对应于箱的中点.
一个QwtPlotPicker盘旋在酒吧表明,他们开始并在实际开始和垃圾箱的两端结束.
但是,我无法获得绘制标签的刻度线,以便沿x轴在正确的位置显示.我正在使用自定义scaledraw,类似于distrowatch示例.我还有一些参数,即数据范围的最小值和bin大小.我的标签索引代码如下所示:
virtual QwtText label( double value ) const
{
QwtText lbl;
//const int index = qRound( value );
const int index = (int)(value-_min_val)/_bin_size;
if ( index >= 0 && index < d_labels.size() )
{
lbl = d_labels[ index ];
}
return lbl;
}
Run Code Online (Sandbox Code Playgroud)
这似乎没问题; 我的标签显示每个箱子的最小值和最大值以及几乎在正确的位置.我试图设置滴答位置如下:
QwtScaleDiv div = _plot->axisScaleDiv(QwtPlot::xBottom);
div.setTicks(QwtScaleDiv::MajorTick, x_data.toList());
_plot->setAxisScaleDiv(QwtPlot::xBottom, div);
Run Code Online (Sandbox Code Playgroud)
这x_data是用于绘制数据的bin中点的向量.轴范围使用以下方式设置:
double half_bin = bin_size / 2.0;
_plot->setAxisScale(QwtPlot::xBottom, x_data.first() - half_bin, x_data.last() + half_bin, bin_size);
Run Code Online (Sandbox Code Playgroud)
我缺少什么想法?根据箱的数量,刻度线(以及随后的标签)偶尔会与箱的中点(或至少大部分)对齐,但随着我更改箱数,刻度将变得或多或少偏离垃圾箱的中心.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |