Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何设置KDChart BarDiagram的固定范围?_C++_Qt - Fatal编程技术网

C++ 如何设置KDChart BarDiagram的固定范围?

C++ 如何设置KDChart BarDiagram的固定范围?,c++,qt,C++,Qt,我想使用KDChart库显示一个BarDiagram。垂直值应在-120到0之间 通常,KDChart从0开始显示条形图,如下所示: 现在,KDChart::CartesianCoordination Plane有一个方法setVerticalRangeReversed(bool) 调用该方法后,图表如下所示: 我需要的是两者的混合,其中条形图如下图所示,但Y轴如上图所示。 在KDChart中有没有办法让条形图从-120开始,然后向0增长 因为y轴值的最小值为-120,所以我将值从[-120

我想使用
KDChart
库显示一个BarDiagram。垂直值应在-120到0之间

通常,KDChart从0开始显示条形图,如下所示:

现在,
KDChart::CartesianCoordination Plane
有一个方法
setVerticalRangeReversed(bool)

调用该方法后,图表如下所示:

我需要的是两者的混合,其中条形图如下图所示,但Y轴如上图所示。

在KDChart中有没有办法让条形图从-120开始,然后向0增长

因为y轴值的最小值为-120,所以我将值从[-120,0]转换为[0,120], 通过每个值加上abs(-120)

我们还必须转换y轴刻度,CartesianAxis有一个接口setAnnotations(QMap)。所以我做了一张这样的地图:

    QMap<double, QString> m;
    m.insert(0, "-120");
    m.insert(20, "-100");
    m.insert(60, "-60");
    //...
    m.insert(120, "0");
    yAxis->setAnnotations(m);
static_cast<CartesianCoordinatePlane*>(chart->coordinatePlane())->setVerticalRange(qMakePair(-120,0));
QMap-m;
m、 插入(0,“-120”);
m、 插入(20,“-100”);
m、 插入(60,“-60”);
//...
m、 插入(120,“0”);
yAxis->setAnnotations(m);

现在,图表看起来正常:

您可以使用以下工具手动设置轴的范围:

CartesianCoordinatePlane::setVerticalRange(const QPair< qreal, qreal > & range)
笛卡尔坐标平面::设置垂直范围(常量QPair&range) 因此,您的代码如下所示:

    QMap<double, QString> m;
    m.insert(0, "-120");
    m.insert(20, "-100");
    m.insert(60, "-60");
    //...
    m.insert(120, "0");
    yAxis->setAnnotations(m);
static_cast<CartesianCoordinatePlane*>(chart->coordinatePlane())->setVerticalRange(qMakePair(-120,0));
static_cast(图表->坐标平面())->setVerticalRange(qMakePair(-120,0));

我不知道这个问题的解决方案,但我重写了这个问题,以便让其他人更容易理解您想要实现的目标。如果我弄错了你的问题,请重新编辑此。如果你仍然没有解决方案,你可以尝试使用底部方法,并自己对轴进行子类化和绘制感谢,我有一个解决方案。作为侧节点:
value+=abs(-120)
value+=120