0

我是 Shinobi Tools 的新手,我有一组点,我想将它们连接到一个线系列。我看到 shinobi 作为 SCHartLineSeries 提供了这个功能。有人可以那么好并向我解释一下吗:D?我真的没有得到文档。一个代码示例会很好!

这是我目前拥有的 现在的情况

这就是我想要实现的。我有 5 个 x 和 y 值。这些不应该用直线连接。关键词:样条 我想要的是

4

2 回答 2

1

你读过这个吗:https ://www.shinobicontrols.com/ios/shinobicharts/quickstartguide ?事实上相当不错,但他们的页面不是那么用户友好,起初我很难找到它。

下面的解决方案是在 Objective-C 中,但应该很容易将它翻译成 Swift。

简而言之:首先导入框架:

#import <ShinobiCharts/ShinobiChart.h> 

然后创建图表对象和轴:

// in viewDidLoad
ShinobiChart* _chart;
_chart.xAxis = [[SChartNumberAxis alloc] init];
_chart.yAxis = [[SChartNumberAxis alloc] init];
_chart = [[ShinobiChart alloc] initWithFrame:self.view.bounds];

[self.view addSubview:_chart];

然后实现数据源<SChartDatasource>

// in viewDidLoad
_chart.datasource = self;

- (int)numberOfSeriesInSChart:(ShinobiChart *)chart {
    return 2;
} 

-(SChartSeries *)sChart:(ShinobiChart *)chart seriesAtIndex:(int)index {
SChartLineSeries *lineSeries = [[SChartLineSeries alloc] init];
    if (index == 0) {
        lineSeries.title = [NSString stringWithFormat:@"y = cos(x)"];
    } else {
        lineSeries.title = [NSString stringWithFormat:@"y = sin(x)"];
    }

    return lineSeries;
}

- (int)sChart:(ShinobiChart *)chart numberOfDataPointsForSeriesAtIndex:(int)seriesIndex {
    return 100;
}

- (id<SChartData>)sChart:(ShinobiChart *)chart dataPointAtIndex:(int)dataIndex forSeriesAtIndex:(int)seriesIndex {

    SChartDataPoint *datapoint = [[SChartDataPoint alloc] init];

    // both functions share the same x-values
    double xValue = dataIndex / 10.0;
    datapoint.xValue = [NSNumber numberWithDouble:xValue];

    // compute the y-value for each series
    if (seriesIndex == 0) {
        datapoint.yValue = [NSNumber numberWithDouble:cosf(xValue)];
    } else {
        datapoint.yValue = [NSNumber numberWithDouble:sinf(xValue)];
    }

    return datapoint;
}

免责声明:数据源实现来自我上面提供的链接的快速入门指南。

- 编辑 -

要使图表弯曲,您需要自己添加更多数据点(计算值并设置超过 5 个点)。请参阅 Shinobi Chart 支持论坛上的讨论:https ://www.shinobicontrols.com/forum/shinobicontrols/2015/6/spline-line-chart 。

于 2015-11-06T14:47:31.903 回答
0

免责声明:我是 Shinobi Controls 的开发人员。

我们当前的 SCHartLineSeries 不支持直接开箱即用的平滑线条。

然而,这是一个经常被要求的功能,因此我们的下一个版本的图表包含了更容易实现平滑线的功能。

同时,您可以通过在图表中添加更多数据点来实现平滑线,为它们提供绘制曲线的数据值。正如 Vive 在她的回答中解释的那样。

当包含此功能的版本发布时,我们将更新此帖子。

亲切的问候,

安德鲁·波尔金霍恩。

于 2015-11-06T17:34:36.813 回答