iOS图表圆下方的图形值

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

我用的是丹尼尔·金迪的图表。在正常情况下,值位于圆上方

1-但当没有足够的空间放置标签时(因为线条),我需要将值/标签下拉到圆圈下方

2-我需要给出圆和标签/值之间的额外偏移量

3-我只需要在第一个和最后一个值上显示圆圈

我正在为数据集委托使用valueFormatter。我可以用手够到它

-(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。但您可以更改字体系列、大小、颜色或格式。