2

我在 iOS 上使用 Shinobi Controls 图表包,我无法理解如何实现显示多个 y 值的十字准线工具提示。就我而言,我有一个烛台图,显示了使用SChartCandlestickSeries该类的标准财务 OHLC 数据值。该文档似乎暗示我需要子类化 anSChartSeries才能实现一些SChartData协议方法,但我不敢相信它涉及到了这一点。

我仍然在努力阅读这里的文档,但是如果有人有一些示例代码,那么现在就值得它的重量了!

注意:我尝试简单地SChartCrosshairMultiValueTooltip为图表的crosshair.tooltip属性分配一个实例,但这似乎并没有起到多大作用——我只看到一个显示单个 x 和 y 值的普通工具提示。

4

1 回答 1

2

听起来你非常正确。您需要一个多值系列(由适当的数据源方法提供):

- (SChartSeries *)sChart:(ShinobiChart *)chart seriesAtIndex:(int)index
{
    SChartCandleStickSeries *series = [SChartCandlestickSeries new];
    series.crosshairEnabled = YES;
    return series;
}

然后图表需要将工具提示设置为您提到的类型的实例(SChartCrosshairMultiValueTooltip):

ShinobiChart *chart = [[ShinobiChart alloc] initWithFrame:self.view.bounds
                                     withPrimaryXAxisType:SChartAxisTypeNumber
                                     withPrimaryYAxisType:SChartAxisTypeNumber];
chart.datasource = self;
[self.view addSubview:chart];
chart.delegate = self;
chart.crosshair.tooltip = [SChartCrosshairMultiValueTooltip new];

为了完整起见,以下是数据源的数据点方法:

- (id<SChartData>)sChart:(ShinobiChart *)chart
        dataPointAtIndex:(int)dataIndex
        forSeriesAtIndex:(int)seriesIndex
{
    SChartMultiYDataPoint *d = [SChartMultiYDataPoint new];
    d.xValue = @(dataIndex);
    [d.yValues setValue:_data[dataIndex] forKey:SChartCandlestickKeyOpen];
    [d.yValues setValue:@([_data[dataIndex] doubleValue] * 1.3) forKey:SChartCandlestickKeyHigh];
    [d.yValues setValue:@([_data[dataIndex] doubleValue] * 0.8) forKey:SChartCandlestickKeyLow];
    [d.yValues setValue:@([_data[dataIndex] doubleValue] * 1.1) forKey:SChartCandlestickKeyClose];
    return d;
}

(注意这里的值只是样本)

示例图表

于 2013-10-30T19:30:19.853 回答