我使用相同的散点图来显示 5 或 4 行,具体取决于要显示的数据类型。将线条放在散点图上的代码是:
if (typeSelector.selectedSegmentIndex == 0) {
if ([plot.identifier isEqual:@"Hotel"]) { nums = valuesQT1; }
if ([plot.identifier isEqual:@"Retail"]) { nums = valuesQT2; }
if ([plot.identifier isEqual:@"Office"]) { nums = valuesQT3; }
if ([plot.identifier isEqual:@"Industrial"]) { nums = valuesQT4; }
if ([plot.identifier isEqual:@"Apartment"]) { nums = valuesQT5; }
}
else {
if ([plot.identifier isEqual:@"East"]) { nums = valuesQR1; }
if ([plot.identifier isEqual:@"South"]) { nums = valuesQR2; }
if ([plot.identifier isEqual:@"Midwest"]) { nums = valuesQR3; }
if ([plot.identifier isEqual:@"West"]) { nums = valuesQR4; }
}
因此,当 typeSelector 为 0 时,图例应显示酒店、零售、办公室、工业和公寓的样本和标签,当 typeSelector 为 1 时,应显示东、南、中西部和西部的样本和标签。
所有散点图都使用相同的折线图:
lineChart = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
linePlotView.hostedGraph = lineChart;
每个数据集都添加到 lineChart 中:
[lineChart addPlot:amtPlot1];
[lineChart addPlot:amtPlot2];
[lineChart addPlot:amtPlot3];
等等。
标签代码如下:
// Add legend
if (typeSelector.selectedSegmentIndex == 0) {
CPTLegend *theLegend = [CPTLegend legendWithGraph:lineChart];
theLegend.swatchSize = CGSizeMake(30.0, 20.0);
CPTMutableTextStyle *blackTextStyle = [CPTMutableTextStyle textStyle];
blackTextStyle.color = [CPTColor blackColor];
blackTextStyle.fontSize = 12.0;
theLegend.numberOfRows = 5;
lineChart.legend = theLegend;
lineChart.legend.fill = [CPTFill fillWithColor:[CPTColor whiteColor]];
lineChart.legendAnchor = CPTRectAnchorLeft;
lineChart.legendDisplacement = CGPointMake(100.0, 0.0);
}
这对于散点图上的第一组 5 行非常有效。但是,当我在第二组 4 行中使用类似代码时,第一组的图例样本和标签与第二组一起显示。
我只想要第一组带有 5 个色板和标签的图例,第二组需要一个带有 4 个色板和标签的图例。
这是否可能无需创建两个单独的图表,如 lineChart1(前 5 个)和 lineChart2(第二个 4)?