2

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

通常,KDChart 从 0 开始条形图,如下 图所示: 条形图,顶部为 0,底部为 -120,条形图从 0 增长到 -120 http://bvdpi.img36.wal8.com/img36/ 371522_20130905114637/137835282162.png

现在KDChart::CartesianCoordinatePlane有一个方法setVerticalRangeReversed(bool)

调用该方法后,图表如下所示: 条形图,顶部为 -120,底部为 0,条形图从 0 增长到 -120 http://bvdpi.img36.wal8.com/img36/371522_20130905114637/137835282217 .png

我需要的是两者的混合,条形图如下图所示,而 Y 轴则如上图所示。
KDChart 中是否有任何方法可以让条形图从 -120 开始并向 0 增长?

4

2 回答 2

1

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

    value += 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);

现在,图表看起来正常:

于 2013-09-11T04:02:40.260 回答
0

您可以使用以下方法手动设置轴的范围:

CartesianCoordinatePlane::setVerticalRange(const QPair< qreal, qreal > & range)

所以你的代码看起来像这样:

static_cast<CartesianCoordinatePlane*>(chart->coordinatePlane())->setVerticalRange(qMakePair(-120,0));
于 2015-06-29T06:44:25.770 回答