Qwt设置自定义坐标轴

设置横轴自定义坐标

QList<double> ticksX[QwtScaleDiv::NTickTypes];
 double dInternalX1 = step*1.0/iXAxisSubParts;
 double dInternalX = (step*iXAxisParts-0)*1.0/iXAxisParts;
 for(int i=0;i<iXAxisParts+1;++i)
 {
     double tmpData = i*dInternalX*1.0;
     qDebug()<<"iii"<<i<<"tmpData"<<tmpData;
     ticksX[QwtScaleDiv::MajorTick].append(tmpData*1.0);
     for(int j=0;j<iXAxisSubParts-1;++j)
     {
         double data = tmpData+(j+1)*(dInternalX1);
         ticksX[QwtScaleDiv::MinorTick].append(data);
     }
 }
 QwtScaleDiv scaleDivX(
         ticksX[QwtScaleDiv::MajorTick].first(),
         ticksX[QwtScaleDiv::MajorTick].last(),
         ticksX );
 setAxisScaleDiv(QwtPlot::xBottom, scaleDivX);

设置纵轴自定义坐标

double dInternal1 = dInternal/iYAxisSubPart;
 for(int i=0;i<iYAxisPart;++i)
 {
     double tmpData = minY*1.0+i*dInternal*1.0;
     qDebug()<<"iii"<<i<<"tmpData"<<tmpData;
     ticks[QwtScaleDiv::MajorTick].append(tmpData*1.0);
     for(int j=0;j<iYAxisSubPart;++j)
     {
         double data = tmpData+(j+1)*dInternal1;
         ticks[QwtScaleDiv::MinorTick].append(data);
     }
 }
 QwtScaleDiv scaleDiv(
         ticks[QwtScaleDiv::MajorTick].first(),
         ticks[QwtScaleDiv::MajorTick].last(),
         ticks );
setAxisScaleDiv(QwtPlot::yLeft, scaleDiv);

设置表格与外框一致

plotLayout()->setAlignCanvasToScales(true);

设置Y轴显示一位小数

class VScaleDraw: public QwtScaleDraw        //自画坐标轴
{
public:
    VScaleDraw()
    {
    }
    virtual QwtText label( double v ) const  //重绘坐标轴 刻度值
    {
       return QwtText( QString::number( v/10 ) );  //默认的 大刻度的时候 才会显示
    }
};

版权声明:本文为TDXX16X5X1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。