iOS图表圆下方的图形值
我用的是丹尼尔·金迪的图表。在正常情况下,值位于圆上方 1-但当没有足够的空间放置标签时(因为线条),我需要将值/标签下拉到圆圈下方 2-我需要给出圆和标签/值之间的额外偏移量 3-我只需要在第一个和最后一个值上显示圆圈 我正在为数据集委托使用valueFormatter。我可以用手够到它iOS图表圆下方的图形值,ios,objective-c,ios-charts,Ios,Objective C,Ios Charts,我用的是丹尼尔·金迪的图表。在正常情况下,值位于圆上方 1-但当没有足够的空间放置标签时(因为线条),我需要将值/标签下拉到圆圈下方 2-我需要给出圆和标签/值之间的额外偏移量 3-我只需要在第一个和最后一个值上显示圆圈 我正在为数据集委托使用valueFormatter。我可以用手够到它 -(NSString *)stringForValue:(double)value entry:(ChartDataEntry *)entry dataSetIndex:(NSInteger)dataSe
-(NSString *)stringForValue:(double)value entry:(ChartDataEntry *)entry
dataSetIndex:(NSInteger)dataSetIndex viewPortHandler:
(ChartViewPortHandler *)viewPortHandler{
if (entry.x==0||entry.x==myArray.count-1) {
NSInteger index = [NSNumber numberWithDouble:value].integerValue;
return [NSString stringWithFormat:@"%ld",(long)index];
} else {
return @"";
}
但我不知道该怎么办
提前感谢。1和2-您可以对项目的解决方案进行基本更改
3-很抱歉,这是折线图上所有值的通用值。但您可以使用组合图表解决此问题。对于第一个和最后一个值,使用气泡-对于中间值,仅此而已,使用折线图
Goodluck:)也许你可以用折线图来回答你的3.5个问题。如果您从github下载ChartDemo应用程序,请查找LineChart1ViewController.m并使用此命令更改-(void)setDataCount:(int)count range:(double)range方法内容
- (void)setDataCount:(int)count range:(double)range {
NSMutableArray *values = [[NSMutableArray alloc] init];
for (int i = 0; i < count; i++)
{
double val = arc4random_uniform(range) + 3;
if(i == 0 || i == count - 1)
[values addObject:[[ChartDataEntry alloc] initWithX:i y:val icon: [UIImage imageNamed:@"icon"]]];
else
[values addObject:[[ChartDataEntry alloc] initWithX:i y:val icon: [UIImage imageNamed:@""]]];
}
LineChartDataSet *set1 = nil;
if (_chartView.data.dataSetCount > 0)
{
set1 = (LineChartDataSet *)_chartView.data.dataSets[0];
set1.values = values;
[_chartView.data notifyDataChanged];
[_chartView notifyDataSetChanged];
}
else
{
set1 = [[LineChartDataSet alloc] initWithValues:values label:@"DataSet 1"];
set1.drawIconsEnabled = YES;
set1.lineDashLengths = @[@5.f, @2.5f];
set1.highlightLineDashLengths = @[@5.f, @2.5f];
[set1 setColor:UIColor.blackColor];
[set1 setCircleColor:UIColor.blackColor];
set1.lineWidth = 1.0;
set1.circleRadius = 0.0;
set1.drawCircleHoleEnabled = NO;
set1.valueFont = [UIFont systemFontOfSize:9.f];
set1.formLineDashLengths = @[@5.f, @2.5f];
set1.formLineWidth = 1.0;
set1.formSize = 15.0;
NSArray *gradientColors = @[
(id)[ChartColorTemplates colorFromString:@"#00ff0000"].CGColor,
(id)[ChartColorTemplates colorFromString:@"#ffff0000"].CGColor
];
CGGradientRef gradient = CGGradientCreateWithColors(nil, (CFArrayRef)gradientColors, nil);
set1.fillAlpha = 1.f;
set1.fill = [ChartFill fillWithLinearGradient:gradient angle:90.f];
set1.drawFilledEnabled = YES;
CGGradientRelease(gradient);
NSMutableArray *dataSets = [[NSMutableArray alloc] init];
[dataSets addObject:set1];
LineChartData *data = [[LineChartData alloc] initWithDataSets:dataSets];
_chartView.data = data;}}
-(void)setDataCount:(int)计数范围:(double)范围{
NSMUTABLEARRY*值=[[NSMUTABLEARRY alloc]init];
for(int i=0;i0)
{
set1=(LineChartDataSet*)_chartView.data.dataSets[0];
set1.values=值;
[_chartView.data notifyDataChanged];
[_图表视图notifyDataSetChanged];
}
其他的
{
set1=[[LineChartDataSet alloc]initWithValues:值标签:@“数据集1”];
set1.drawiconseabled=是;
set1.linedashlength=@[@5.f,@2.5f];
set1.highlightlinedashlength=@[@5.f,@2.5f];
[set1 setColor:UIColor.blackColor];
[set1 setCircleColor:UIColor.blackColor];
set1.lineWidth=1.0;
set1.circleRadius=0.0;
set1.drawCircleHoleEnabled=否;
set1.valueFont=[UIFont-systemFontOfSize:9.f];
set1.formlinedashlength=@[@5.f,@2.5f];
set1.formLineWidth=1.0;
set1.formSize=15.0;
NSArray*渐变颜色=@[
(id)[ChartColorTemplates colorFromString:@“#00ff0000”].CGColor,
(id)[ChartColorTemplates colorFromString:@“#ffff0000”].CGColor
];
CGGradientRef gradient=CGGradientCreateWithColor(nil,(CFArrayRef)GradientColor,nil);
set1.fillAlpha=1.f;
set1.fill=[chartfillwithlineargradient:gradient angle:90.f];
set1.drawFilledEnabled=是;
CGGradientRelease(梯度);
NSMUTABLEARRY*数据集=[[NSMUTABLEARRY alloc]init];
[数据集addObject:set1];
LineChartData*data=[[LineChartData alloc]initWithDataSets:dataSets];
_chartView.data=data;}
我的意思是,在设置0.0f圆半径后,您可以对第一个和最后一个圆使用(自定义看起来像圆或其他)图标。看起来像这样
玩得开心:)你能发布标签的代码吗?好的,更新了代码@johnnyrockxcan我们能看到自己绘制标签的代码吗?成功了!!谢谢:)你知道如何将attributedString设置为数据值文本吗?听起来不错:)关于attributedString,很抱歉,LineChartDataSet上有valueFont、valueTextColor、valueFormatter属性,它们都不用于attributedString。但您可以更改字体系列、大小、颜色或格式。