iOS 图表库 - 剪裁 X 轴中的最后一个值

iOS Charts Library - clipping the last value in X Axis

我正在处理 iOS Charts Library 制作的折线图。

X轴的值是从1980到2000,但是X轴最后一个值“2000”漏掉了,如下截图:

代码如下:

#import <Charts/Charts-Swift.h>

@interface ViewController () <ChartViewDelegate> {
    IBOutlet UITextField *tfInput;
    IBOutlet LineChartView *chartView;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    chartView.delegate = self;
    chartView.chartDescription.enabled = NO;
    chartView.drawGridBackgroundEnabled = YES;
    chartView.legend.enabled = NO;

    // X-axis
    chartView.xAxis.gridLineDashLengths = @[@10.0, @10.0];
    chartView.xAxis.gridLineDashPhase = 0.f;
    chartView.xAxis.labelPosition = XAxisLabelPositionBottom;

    // Y-axis
    chartView.rightAxis.enabled = NO;
    NSMutableArray *theDataSet = [NSMutableArray array];
    // ( logic of adding data into data set here )
    [self updateChartDataWithData:theDataSet];
}

- (void)updateChartDataWithdata:(NSMutableArray *)data {
    LineChartDataSet *dataSet = nil;
    if(chartView.data.dataSetCount > 0) {
        // Load existing data set
        dataSet = (LineChartDataSet *)chartView.data.dataSets[0];
        // ...and update it
        dataSet.values = data;
        [chartView.data notifyDataChanged];
        [chartView notifyDataSetChanged];
    } else {
        // Create new dataset
        dataSet = [[LineChartDataSet alloc] initWithValues:data label:@"Dataset"];
        dataSet.axisDependency = AxisDependencyLeft;
        [dataSet setColor:[UIColor colorWithRed:51/255.f green:181/255.f blue:229/255.f alpha:1.f]];
        [dataSet setCircleColor:UIColor.whiteColor];
        dataSet.lineWidth = 2.0;
        dataSet.circleRadius = 3.0;
        dataSet.fillAlpha = 66/255.0;
        dataSet.fillColor = [UIColor colorWithRed:51/255.f green:181/255.f blue:229/255.f alpha:1.f];
        dataSet.highlightColor = [UIColor colorWithRed:244/255.f green:117/255.f blue:117/255.f alpha:1.f];
        dataSet.drawCircleHoleEnabled = NO;
        dataSet.drawValuesEnabled = NO;

        dataSet.drawCirclesEnabled = NO;

        NSMutableArray *dataSets = [[NSMutableArray alloc] init];
        [dataSets addObject:dataSet];

        LineChartData *data = [[LineChartData alloc] initWithDataSets:dataSets];
        [data setValueTextColor:UIColor.whiteColor];
        [data setValueFont:[UIFont systemFontOfSize:9.f]];

        chartView.data = data;
    }
}

实际使用的数据如下:

X: 1980 Y: 0.000000115
X: 1981 Y: 0.000000028
X: 1982 Y: 0.000000038
X: 1983 Y: 0.000000016
X: 1984 Y: 0.000000032
X: 1985 Y: 0.000000038
X: 1986 Y: 0.000000045
X: 1987 Y: 0.000000069
X: 1988 Y: 0.000000045
X: 1989 Y: 0.000000074
X: 1990 Y: 0.000000054
X: 1991 Y: 0.000000058
X: 1992 Y: 0.000000049
X: 1993 Y: 0.000000066
X: 1994 Y: 0.000000065
X: 1995 Y: 0.000000059
X: 1996 Y: 0.000000050
X: 1997 Y: 0.000000048
X: 1998 Y: 0.000000062
X: 1999 Y: 0.000000081
X: 2000 Y: 0.000000079

我错过了什么/配置错误的图表视图?

p.s。图表视图右侧有很多空间,但最后一个值没有显示。

您的 x 轴值以 3 为单位上升,并且 2000 不是 3 的倍数,因为它的起点是 1980 年。x 轴上的下一个值是 2001,但它在您的数据集之外,所以是未显示。 您可以使用 granularity 属性 更改此设置。

chartView.xAxis.granularity = 4

我目前没有权限进行测试,但我很确定。