2017-06-23 48 views
0

我正在處理由iOS Charts Library所做的折線圖。iOS圖表庫 - 剪切X軸中的最後一個值

X軸的值是1980年至2000年,但最後一個值「2000」被從X軸錯過了,如下面的截圖:

enter image description here

代碼如下:

#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.圖表視圖右側有很多空格,但最後一個值只是不顯示。

回答

1

您的x軸值在3以上,而2000不是3的倍數,因爲它的起始點爲1980. x軸上的下一個值是2001,但是它超出了您的數據集,因此是未顯示。 您可以使用granularity屬性更改此設置。

chartView.xAxis.granularity = 4 

我目前沒有進入測試,但我很確定。

+0

是的,它非常有用,非常感謝! – Raptor