2016-03-30 17 views
1

現在、私のプロジェクトではiosChartが使用されています。私は、画像に、以下に示すのバーチャートを使用した:iosChart:x軸ラベルがまったく表示されない

問題は、それが(2番目と4番目の)全体のx表示されていないです - 軸lableを。私はズームして表示するとき。このlableを表示する方法はありますか?

chartView.delegate = self; 

chartView.descriptionText = @""; 
chartView.noDataTextDescription = GGLocalizeString(@"deshboard.ui.chart.empty"); 

chartView.drawBarShadowEnabled = NO; 
chartView.drawValueAboveBarEnabled = YES; 

chartView.maxVisibleValueCount = 60; 
chartView.pinchZoomEnabled = NO; 
chartView.drawGridBackgroundEnabled = NO; 

ChartXAxis *xAxis = chartView.xAxis; 
xAxis.labelPosition = XAxisLabelPositionBottom; 
xAxis.labelFont = [UIFont systemFontOfSize:10.f]; 
xAxis.drawGridLinesEnabled = NO; 
xAxis.spaceBetweenLabels = 2.0; 

ChartYAxis *leftAxis = chartView.leftAxis; 
leftAxis.labelFont = [UIFont systemFontOfSize:10.f]; 
leftAxis.labelCount = 8; 
leftAxis.valueFormatter = [[NSNumberFormatter alloc] init]; 
leftAxis.valueFormatter.maximumFractionDigits = 1; 
leftAxis.valueFormatter.negativeSuffix = @""; 
leftAxis.valueFormatter.positiveSuffix = @""; 
leftAxis.labelPosition = YAxisLabelPositionOutsideChart; 
leftAxis.spaceTop = 0.15; 

ChartYAxis *rightAxis = chartView.rightAxis; 
rightAxis.drawGridLinesEnabled = NO; 
rightAxis.labelFont = [UIFont systemFontOfSize:10.f]; 
rightAxis.labelCount = 8; 
rightAxis.valueFormatter = leftAxis.valueFormatter; 
rightAxis.spaceTop = 0.15; 

chartView.legend.position = ChartLegendPositionBelowChartLeft; 
chartView.legend.form = ChartLegendFormSquare; 
chartView.legend.formSize = 9.0; 
chartView.legend.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:11.f]; 
chartView.legend.xEntrySpace = 4.0; 


if (self.chartData.arrayCityData.count == 0) { 
    return cell; 
} 

//X - VALUE 
NSMutableArray *xVals = [[NSMutableArray alloc] init]; 

for (int i = 0; i < [self.chartData.arrayCityData count]; i++) 
{ 
    DealData *dealData = [self.chartData.arrayCityData objectAtIndex:i]; 

    [xVals addObject: [NSString stringWithFormat:@"%@(%.2f%%)",dealData.name,[dealData.totalClick floatValue]*100/[self totalCityClicks]]]; 
} 

//Y - VALUE 
NSMutableArray *yVals = [[NSMutableArray alloc] init]; 

for (int i = 0; i < [self.chartData.arrayCityData count]; i++) 
{ 
    DealData *dealData = [self.chartData.arrayCityData objectAtIndex:i]; 

    [yVals addObject:[[BarChartDataEntry alloc] initWithValue:[dealData.totalClick doubleValue] xIndex:i]]; 
} 

BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:GGLocalizeString(@"deshboard.ui.cell.lblTitle6.cities")]; 
set1.barSpace = 0.35; 

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

BarChartData *data = [[BarChartData alloc] initWithXVals:xVals dataSets:dataSets]; 
[data setValueFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:10.f]]; 

//remove decimal 
NSNumberFormatter *vf = [[NSNumberFormatter alloc] init]; 
vf.generatesDecimalNumbers = NO; 
data.valueFormatter = vf; 

chartView.data = data; 
    chartView.legend.position = ChartLegendPositionBelowChartLeft; 
    chartView.legend.form = ChartLegendFormSquare; 
    chartView.legend.formSize = 9.0; 
    chartView.legend.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:11.f]; 
    chartView.legend.xEntrySpace = 4.0; 


    if (self.chartData.arrayCityData.count == 0) { 
     return cell; 
    } 

    //X - VALUE 
    NSMutableArray *xVals = [[NSMutableArray alloc] init]; 

    for (int i = 0; i < [self.chartData.arrayCityData count]; i++) 
    { 
     DealData *dealData = [self.chartData.arrayCityData objectAtIndex:i]; 

     [xVals addObject: [NSString stringWithFormat:@"%@(%.2f%%)",dealData.name,[dealData.totalClick floatValue]*100/[self totalCityClicks]]]; 
    } 

    //Y - VALUE 
    NSMutableArray *yVals = [[NSMutableArray alloc] init]; 

    for (int i = 0; i < [self.chartData.arrayCityData count]; i++) 
    { 
     DealData *dealData = [self.chartData.arrayCityData objectAtIndex:i]; 

     [yVals addObject:[[BarChartDataEntry alloc] initWithValue:[dealData.totalClick doubleValue] xIndex:i]]; 
    } 

    BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:GGLocalizeString(@"deshboard.ui.cell.lblTitle6.cities")]; 
    set1.barSpace = 0.35; 

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

    BarChartData *data = [[BarChartData alloc] initWithXVals:xVals dataSets:dataSets]; 
    [data setValueFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:10.f]]; 

    //remove decimal 
    NSNumberFormatter *vf = [[NSNumberFormatter alloc] init]; 
    vf.generatesDecimalNumbers = NO; 
    data.valueFormatter = vf; 

    chartView.data = data; 
+0

おそらくチャートの設定に使用したコードを表示しますか? – trojanfoe

+0

@trojanfoeが追加されました! –

答えて

2

も、デフォルトでは、IOS-チャートはx軸のラベルを描画する間隔を決定するために、X軸の係数を計算します:

は、ここに私のコードです。それはあなたの場合です。すべてのラベルがバーより長いので、ラベルの重なりを避けるためには、それを行わなければなりません。

あなたがそうしたくない場合は、単にラベルが重なっている場合は、単にコードの下に追加して、私はそれが仕事だと思う見xAxis.setLabelsToSkip(0)

1

を呼び出します。

[xAxis setLabelsToSkip:0]; 
[xAxis setWordWrapEnabled:YES]; 
関連する問題