我有两个线系列,如何在两个系列上同时选择点?基本上,我的图表有两个y值,共享相同的x值,我将它们表示为两个系列。我想将两个点都显示为给定X值的选定点。
你好,谢谢你的回复
我在中这样做
- (void)sChart:(ShinobiChart *)chart toggledSelectionForPoint:(SChartDataPoint *)dataPoint inSeries:(SChartSeries *)series atPixelCoordinate:(CGPoint)pixelPoint
SChartDataPoint* point1Series1 = [chart.datasource sChart:chart dataPointAtIndex:dataPoint.index forSeriesAtIndex:0];
point1Series1.selected = YES;
SChartDataPoint* point1Series2 = [chart.datasource sChart:chart dataPointAtIndex:dataPoint.index forSeriesAtIndex:1];
point1Series2.selected = YES;
当我在这行代码后打印这两个点的选定状态时,它们返回1(已选定),但它们似乎没有在图表上显示为已选定,只有我在设备上的图表上选择的一个似乎显示为已选择,尽管我在那之后调用了redrawChart。如有任何帮助,将不胜感激
我认为您的图表数据源很可能(我猜是因为我看不到您的代码)没有返回对作为图表一部分的数据点的引用,而是在每次请求时生成一个新的数据点对象。
为了处理此问题,您可以通过SChartSeries
对象上的dataSeries
属性从图表本身请求数据点。
以下委托方法应执行所需的选择。
- (void)sChart:(ShinobiChart *)chart toggledSelectionForPoint:(SChartDataPoint *)dataPoint inSeries:(SChartSeries *)series atPixelCoordinate:(CGPoint)pixelPoint
{
// Selection details
NSInteger dataPointIndex = dataPoint.index;
BOOL selected = dataPoint.selected;
for (SChartSeries *chartSeries in chart.series) {
// If only one data point in the series can be selected at once, then deselect the rest
if(!series.togglePointSelection && selected) {
for(SChartDataPoint *dp in chartSeries.dataSeries.dataPoints) {
dp.selected = NO;
}
}
// Find the data point and perform the selection
SChartDataPoint *dp = chartSeries.dataSeries.dataPoints[dataPointIndex];
dp.selected = selected;
}
}
希望能有所帮助。
您应该能够在数据点上设置.selected并自定义系列。style.selectedPointStyle属性以显示您想要的点:)