2

我正在使用 ios-charts 显示一个水平条形图,其值如下:

 var dataEntries: [BarChartDataEntry] = []
        let dataEntry = BarChartDataEntry(value: self.deductible!.deductiblePaid, xIndex: 0)
        dataEntries.append(dataEntry)
        let chartDataSet =    BarChartDataSet(yVals: dataEntries, label: "Deductible")
        let chartData = BarChartData( xVals: dataPoints, dataSet: chartDataSet)


        self.horizontalBarChart!.data = chartData
        self.horizontalBarChart!.leftAxis.customAxisMax = 3000.0
        self.horizontalBarChart!.leftAxis.startAtZeroEnabled = false

        chartDataSet.colors = ChartColorTemplates.vordiplom()

我试图设置 YAxis 的最大值,但它不影响图表。编辑:请在此处查看屏幕截图:http: //postimg.org/image/ogoj2t02f/ 我需要的是该栏应显示上限为 3000(或动态指定的数量),而不是计算出的上限。

我更改了一些代码来实现它,这是我目前拥有的:

self.horizontalBarChart!.noDataText = "You need to provide data for the chart."

        self.horizontalBarChart!.setVisibleYRangeMaximum(3000, axis: ChartYAxis.AxisDependency.Left)
        self.horizontalBarChart!.descriptionText = ""
        var dataEntries: [BarChartDataEntry] = []
        let dataEntry = BarChartDataEntry(value: self.deductible!.deductiblePaid, xIndex: 0)
        dataEntries.append(dataEntry)
        let chartDataSet =    BarChartDataSet(yVals: dataEntries, label: " ")
        self.horizontalBarChart!.noDataText = "You need to provide data for the chart."
        self.horizontalBarChart!.setViewPortOffsets(left: 0, top: 0, right: 0, bottom: 0);
        let chartData = BarChartData( xVals: dataPoints, dataSet: chartDataSet)

        self.horizontalBarChart!.autoScaleMinMaxEnabled = false
        self.horizontalBarChart!.data = chartData
        self.horizontalBarChart!.leftAxis.axisMaximum = 1600
        self.horizontalBarChart!.leftAxis.axisMinimum = 00
        self.horizontalBarChart!.rightAxis.axisMaximum = 1600
        //self.horizontalBarChart!.leftAxis.customAxisMax = 3000.0
        //self.horizontalBarChart!.leftAxis.startAtZeroEnabled = false

        chartDataSet.colors = ChartColorTemplates.vordiplom()
        self.horizontalBarChart!.xAxis.labelPosition = .Top

        self.horizontalBarChart!.backgroundColor = UIColor(red: 189/255, green: 195/255, blue: 199/255, alpha: 1)
        self.horizontalBarChart!.animate(xAxisDuration: 2.0, yAxisDuration: 2.0)

如果我不清楚并且您需要更多详细信息,请告诉我。这比我想象的更具挑战性!在这里的任何帮助将不胜感激。

第二次编辑: 我现在有以下代码:

 func setHorizontalBarChartData() {

        self.horizontalBarChart!.descriptionText = ""
        var dataEntries: [BarChartDataEntry] = []
        let dataEntry = BarChartDataEntry(value: 900, xIndex: 0)
        dataEntries.append(dataEntry)
        let chartDataSet =    BarChartDataSet(yVals: dataEntries, label: " ")
        self.horizontalBarChart!.noDataText = "You need to provide data for the chart."
        //self.horizontalBarChart!.setViewPortOffsets(left: 0, top: 0, right: 0, bottom: 0);
        let deductible = [" "]
        let chartData = BarChartData( xVals: deductible, dataSet: chartDataSet)
        self.horizontalBarChart!.data = chartData
        self.horizontalBarChart!.leftAxis.startAtZeroEnabled = false
        self.horizontalBarChart!.rightAxis.startAtZeroEnabled = false
        self.horizontalBarChart!.rightAxis.customAxisMax = 3000
        self.horizontalBarChart!.rightAxis.customAxisMin = 10
        chartDataSet.colors = ChartColorTemplates.vordiplom()
        self.horizontalBarChart!.xAxis.labelPosition = .Top
        self.horizontalBarChart!.backgroundColor = UIColor(red: 189/255, green: 195/255, blue: 199/255, alpha: 1)
        self.horizontalBarChart!.animate(xAxisDuration: 2.0, yAxisDuration: 2.0)
    }

我仍然得到同样的东西:http ://postimg.org/image/ogoj2t02f/ 我只需要一个值高达 3000 的条形图和一个高达 900 的条形图。你能帮忙吗?

4

2 回答 2

5

如果上下 y 轴值未按预期显示,请确保,

  1. 您在 y 轴的左侧和右侧设置customAxisMaxand 。customAxisMin
  2. 在设置图表视图之前设置和customAxisMaxcustomAxisMax.data
  3. 您将 x 和 y 轴都设置startAtZeroEnabled为 false。并且您在设置图表视图startAtZeroEnabled之前设置。.data

我花了几个小时才弄清楚这些。希望它可以为您节省一些。

于 2015-10-04T22:56:44.730 回答
2

customAxisMax应该能帮到你。它在我这边工作得很好。

您可能缺少的是,您正在设置leftAxis,但您应该知道也有rightAxis。我不确定您使用的是哪个。

如果你看一下BarLineChartViewBase.swift',里面有代码

internal override func calcMinMax

_leftAxis.axisMaximum = !isnan(_leftAxis.customAxisMax) ? _leftAxis.customAxisMax : (maxLeft + topSpaceLeft)
_rightAxis.axisMaximum = !isnan(_rightAxis.customAxisMax) ? _rightAxis.customAxisMax : (maxRight + topSpaceRight)
_leftAxis.axisMinimum = !isnan(_leftAxis.customAxisMin) ? _leftAxis.customAxisMin : (minLeft - bottomSpaceLeft)
_rightAxis.axisMinimum = !isnan(_rightAxis.customAxisMin) ? _rightAxis.customAxisMin : (minRight - bottomSpaceRight)

它读取customAxisMaxcustomAxisMin一旦你设置它。您需要仔细检查您使用的是哪个轴。

编辑您的第二次编辑:

我只是更改了演示代码,是你想要的吗?

ios-charts 演示中的代码,在您的演示代码中尝试:

- (void)setDataCount:(int)count range:(double)range
{
    NSMutableArray *xVals = [[NSMutableArray alloc] init];

    [xVals addObject:months[0]];

    NSMutableArray *yVals = [[NSMutableArray alloc] init];

    [yVals addObject:[[BarChartDataEntry alloc] initWithValue:900 xIndex:0]];

    BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:@"DataSet"];
    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]];
    _chartView.leftAxis.startAtZeroEnabled = NO;
    _chartView.rightAxis.startAtZeroEnabled = NO;
    _chartView.rightAxis.enabled = NO;
    _chartView.leftAxis.customAxisMax = 3000;
    _chartView.leftAxis.customAxisMin = 10;

    _chartView.data = data;
}

截屏: 在此处输入图像描述

于 2015-07-14T10:19:44.530 回答