我正在尝试使图表中的列可选择,并在单击时显示所选列的更多详细信息。每列由一个系列表示(您将在一秒钟内理解)。
这就是我构建每个系列的方式:
-(SChartSeries *)sChart:(ShinobiChart *)chart seriesAtIndex:(int)index {
SChartColumnSeries *series = [SChartColumnSeries new];
series.style.showAreaWithGradient = NO;
series.stackIndex = [NSNumber numberWithInt:0];
series.selectedStyle.showAreaWithGradient = NO;
CHART_COLOR_TYPE dataType = [TestGraphDataManager getDataType:index];
series.style.areaColor = (dataType == ACCOUNT)?
[UIColor colorWithRed:227.0f/255.0f green:179.0f/255.0f blue:0.0f/255.0f alpha:0.5f]:
[UIColor colorWithRed:0.0f/255.0f green:172.0f/255.0f blue:235.0f/255.0f alpha:0.5f];
series.selectedStyle.areaColor = [UIColor colorWithRed:129.0f/255.0f green:0.0f/255.0f blue:82.0f/255.0f alpha:0.5f];
series.selectionMode = SChartSelectionSeries;
series.style.lineColor = [UIColor clearColor];
series.selectedStyle.lineColor = [UIColor clearColor];
return series;
}
我目前遇到的问题是只有第一个系列是可选的。我还让每个条形图都用不同的系列表示,这样我就可以轻松地切换它的颜色series.selectionMode = SChartSelectionSeries
最后我有这个委托事件,这样我就可以加载额外的数据,但它也只在第一个系列中被调用
- (void)sChart:(ShinobiChart *)chart toggledSelectionForSeries:(SChartSeries *)series nearPoint:(SChartDataPoint *)dataPoint atPixelCoordinate:(CGPoint)pixelPoint{
NSLog(@"click event called");
//Display data
}
有谁知道为什么会这样?一整天都让我发疯。
谢谢您,提前提供任何帮助。
编辑:
我发现了主要问题,因为series.stackIndex = [NSNumber numberWithInt:0];
它使所有条具有相同的名称堆栈(因为名称的名称重复在我看来这不是问题),我这样做是为了使所有条都相同与刻度标记的距离,因此条形不是很尖。但我相信 shinobi 为这些值设置了隐形条,并且它们高于另一个,因此只有第一个系列可供选择,因为它高于其他系列。如果我删除那条线,图形看起来很糟糕,但都是可点击的。关于如何绕过这个或避免这个问题的任何想法?
它应该看起来如何(使用堆叠索引),但它会破坏点击事件:
如果没有堆叠索引,所有条形图都是可点击的,但看起来不太好,而且我拥有的条形图越多,它只使用 4 个条形图就会变得更糟: