Отрезанные метки значений горизонтальной гистограммы DanielGindi IOS - PullRequest
0 голосов
/ 12 февраля 2019

Я установил горизонтальную гистограмму и поместил пользовательское значение в каждую гистограмму.К сожалению, большинство маленьких значений не отображаются должным образом в баре.Есть ли способ установить минимальную длину стержня, чтобы избежать этой проблемы (или чего-то еще).

Я перепробовал множество вариантов, чтобы установить смещение и minValue, но безуспешно.Если хотите, кто-то может указать мне в правильном направлении.Это будет высоко ценится.Спасибо

enter image description here

Ниже приведен код для воспроизведения этого поведения.Словарь состоит из имен и значений (например, 569, 714, 1444 и т. Д.)

- (void)showBarlineReportDoctorsWithView:(HorizontalBarChartView *)viewChart andDataSource:(NSDictionary *)dictDataSource
{
    viewChart.data = nil;
    viewChart.noDataText = @"";
    viewChart.chartDescription.enabled = NO;
    viewChart.drawGridBackgroundEnabled = NO;
    viewChart.dragEnabled = YES;
    [viewChart setScaleEnabled:NO];
    viewChart.pinchZoomEnabled = NO;
    viewChart.delegate = self;
    viewChart.drawBarShadowEnabled = NO;
    viewChart.drawValueAboveBarEnabled = NO;
    viewChart.legend.enabled = NO;
    viewChart.highlightPerDragEnabled = NO;
    viewChart.highlightFullBarEnabled = NO;
    viewChart.highlightPerTapEnabled = NO;

    viewChart.leftAxis.drawAxisLineEnabled = NO;
    viewChart.leftAxis.drawGridLinesEnabled = NO;
    viewChart.leftAxis.drawZeroLineEnabled = NO;
    viewChart.leftAxis.drawLabelsEnabled = NO;
    viewChart.leftAxis.drawBottomYLabelEntryEnabled = NO;
    viewChart.leftAxis.drawLimitLinesBehindDataEnabled = NO;
    viewChart.leftAxis.axisMinimum = 0.0;
    viewChart.leftAxis.enabled = NO;

    viewChart.rightAxis.drawAxisLineEnabled = NO;
    viewChart.rightAxis.drawGridLinesEnabled = NO;
    viewChart.rightAxis.drawZeroLineEnabled = YES;
    viewChart.rightAxis.drawLabelsEnabled = NO;
    viewChart.rightAxis.axisMinimum = 0.0;
    viewChart.rightAxis.enabled = YES;

    viewChart.xAxis.drawAxisLineEnabled = YES;
    viewChart.xAxis.drawGridLinesEnabled = NO;
    viewChart.xAxis.labelFont = [UIFont fontWithName:@"Helvetica" size:10.5];
    viewChart.xAxis.labelTextColor = [UIColor blackColor];
    viewChart.xAxis.labelPosition = XAxisLabelPositionBottom;
    viewChart.xAxis.labelWidth = 300;
    viewChart.xAxis.labelHeight = 30;

    viewChart.xAxis.drawLabelsEnabled = YES;
    viewChart.xAxis.drawLimitLinesBehindDataEnabled = NO;
    viewChart.xAxis.granularity = 1.0;
    viewChart.xAxis.labelCount = dictDataSource.count;

    //Sort the dictionary to its values descending
    NSArray *blockSortedKeys = [dictDataSource keysSortedByValueUsingComparator: ^(id obj1, id obj2)
                                {
                                    // Switching the order of the operands reverses the sort direction
                                    return [obj2 compare:obj1];
                                }];
    NSMutableArray *yVals = NSMutableArray.new;
    NSMutableArray<NSString *> *xLabels = NSMutableArray.new;
    int i = 0;
    for (NSString *key in blockSortedKeys) {
        double dblValue = [dictDataSource[key] doubleValue];
        [yVals addObject:[[BarChartDataEntry alloc] initWithX:i y:dblValue]];
        NSString *strKeyAbbr = [IOSUtilities CutTextToRect:key MaxWidth:viewChart.xAxis.labelWidth withFont:[UIFont fontWithName:@"Helvetica" size:10.5]];
        [xLabels addObject:strKeyAbbr];
        i++;
    }

    if (yVals.count > 0)
    {
        viewChart.xAxis.valueFormatter = [[ChartIndexAxisValueFormatter alloc] initWithValues:xLabels];
        BarChartDataSet *set1 = nil;
        set1 = [[BarChartDataSet alloc] initWithValues:yVals label:@"DataSet"];
        set1.drawIconsEnabled = YES;
        set1.drawValuesEnabled = YES;
        set1.valueTextColor = [UIColor colorWithRed:229.0 green:252.0 blue:255.0 alpha:1.0];
        set1.valueFont = [UIFont fontWithName:@"Helvetica" size:20.0];

        NSNumberFormatter *pFormatter = [[NSNumberFormatter alloc] init];
        pFormatter.numberStyle = NSNumberFormatterCurrencyStyle;
        pFormatter.currencySymbol = @"€ ";
        pFormatter.maximumFractionDigits = 0;

        ChartDefaultValueFormatter *chartFormatter = [[ChartDefaultValueFormatter alloc] init];
        chartFormatter.formatter = pFormatter;
        [set1 setColor:[IOSUtilities getBlueIPraxColor]];

        NSArray *dataSets = @[set1];
        BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];
        [data setValueFont:[UIFont fontWithName:@"Helvetica" size:20.0]];
         [data groupBarsFromX:0.0 groupSpace:10.0 barSpace:10.0];
        [data setValueFormatter:chartFormatter];
        viewChart.data = data;
    }
    [viewChart notifyDataSetChanged];
}
...