I create a colormap like this:

        QCPColorMap *colormap = new QCPColorMap(plot->xAxis,plot->yAxis);
        colormap ->setInterpolate(false);
        colormap ->setDataRange(QCPRange(0, 5));
        colormap ->data()->setRange(QCPRange(10, 20), QCPRange(0, 40000));
        colormap ->data()->setSize(1, 40000);
        color->setGradient(*gradient);

        for(int i=0; i<1; i++){
            for(int j=0; j<40000; j++){
                colormap->data()->setCell(0, j, rand()%5);
            }
        }
        this->plot->replot();

and I find that the result's Y axis range isn't the range I've set´╝îit's smaller.When I switch interpolate to true,the display is normal.But i don't need the interpolate effects,how can i solve this?