ShinobiCharts 样式/数据顺序问题
ShinobiCharts styling / order of data issues
我想问一些图表样式和数据问题。我的图表目前看起来像这样:
我想在图表周围添加圆角边框,我尝试使用以下代码无济于事:
_chart.layer.cornerRadius = 10.0;
_chart.layer.borderWidth = 0.7;
_chart.layer.borderColor = [UIColorwhiteColor].CGColor;
我也想给条形图添加标签以指示它们的值,但不知道该怎么做。
我的最后一个问题是关于图表中的数据。尽管具有正确顺序的数据结构,但数据在顺序方面显得杂乱无章(应显示为 M T W TH F S SU)。我的数据结构是:
_sales[0] = @{@"M" : @1.6, @"T" : @5.6, @"W" : @10.6, @"TH" : @12.6, @"F" : @15.6, @"S" : @3.6, @"Su" : @4.6};
并按以下方式使用:
- (id<SChartData>)sChart:(ShinobiChart *)chart dataPointAtIndex:(NSInteger)dataIndex forSeriesAtIndex:(NSInteger)seriesIndex {
SChartDataPoint *datapoint = [[SChartDataPointalloc] init];
NSString* key = _sales[seriesIndex].allKeys[dataIndex];
datapoint.xValue = key;
datapoint.yValue = _sales[seriesIndex][key];
return datapoint;
}
如有任何建议或意见,我们将不胜感激,在此先致谢!
免责声明:我为 ShinobiControls 工作
图表边框
您可以使用 borderThickness
而不是 layer.borderWidth
,您可以使用 borderColor
而不是 layer.borderColor
。
我测试时,以下内容对我有用:
_chart.borderColor = [UIColor redColor];
_chart.borderThickness = @(5);
_chart.layer.cornerRadius = 10.0;
数据点标签
您可以打开数据点标签并通过从数据源返回的系列控制它们的样式:
series.style.dataPointLabelStyle.showLabels = YES;
数据顺序
您提到您的数据结构是 "in the correct order",但不幸的是,这并不完全正确。您使用的 NSDictionary
不保证顺序。当您在 NSDictionary
上调用 allKeys
时,返回的数组不一定按顺序排列。根据 allKeys
的 NSDictionary
API documentation:
The order of the elements in the array is not defined.
为了解决这个问题,您需要切换到保证顺序的数据结构。
希望以上信息有用!
注意: 原文post中有很多不同的问题,所以这个回复包含了几个答案。我不太确定 editing/splitting 关于 SO 的问题的礼仪是什么,所以我就不管它了。如果有人遇到这个问题并按照这些思路提出建议,请随时进行编辑或添加评论等。
我想问一些图表样式和数据问题。我的图表目前看起来像这样:
我想在图表周围添加圆角边框,我尝试使用以下代码无济于事:
_chart.layer.cornerRadius = 10.0;
_chart.layer.borderWidth = 0.7;
_chart.layer.borderColor = [UIColorwhiteColor].CGColor;
我也想给条形图添加标签以指示它们的值,但不知道该怎么做。
我的最后一个问题是关于图表中的数据。尽管具有正确顺序的数据结构,但数据在顺序方面显得杂乱无章(应显示为 M T W TH F S SU)。我的数据结构是:
_sales[0] = @{@"M" : @1.6, @"T" : @5.6, @"W" : @10.6, @"TH" : @12.6, @"F" : @15.6, @"S" : @3.6, @"Su" : @4.6};
并按以下方式使用:
- (id<SChartData>)sChart:(ShinobiChart *)chart dataPointAtIndex:(NSInteger)dataIndex forSeriesAtIndex:(NSInteger)seriesIndex {
SChartDataPoint *datapoint = [[SChartDataPointalloc] init];
NSString* key = _sales[seriesIndex].allKeys[dataIndex];
datapoint.xValue = key;
datapoint.yValue = _sales[seriesIndex][key];
return datapoint;
}
如有任何建议或意见,我们将不胜感激,在此先致谢!
免责声明:我为 ShinobiControls 工作
图表边框
您可以使用 borderThickness
而不是 layer.borderWidth
,您可以使用 borderColor
而不是 layer.borderColor
。
我测试时,以下内容对我有用:
_chart.borderColor = [UIColor redColor];
_chart.borderThickness = @(5);
_chart.layer.cornerRadius = 10.0;
数据点标签
您可以打开数据点标签并通过从数据源返回的系列控制它们的样式:
series.style.dataPointLabelStyle.showLabels = YES;
数据顺序
您提到您的数据结构是 "in the correct order",但不幸的是,这并不完全正确。您使用的 NSDictionary
不保证顺序。当您在 NSDictionary
上调用 allKeys
时,返回的数组不一定按顺序排列。根据 allKeys
的 NSDictionary
API documentation:
The order of the elements in the array is not defined.
为了解决这个问题,您需要切换到保证顺序的数据结构。
希望以上信息有用!
注意: 原文post中有很多不同的问题,所以这个回复包含了几个答案。我不太确定 editing/splitting 关于 SO 的问题的礼仪是什么,所以我就不管它了。如果有人遇到这个问题并按照这些思路提出建议,请随时进行编辑或添加评论等。